Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UITextField-圆角问题_Iphone_Objective C_Ios_Ios5_Uitextfield - Fatal编程技术网

Iphone UITextField-圆角问题

Iphone UITextField-圆角问题,iphone,objective-c,ios,ios5,uitextfield,Iphone,Objective C,Ios,Ios5,Uitextfield,我提出了我面临的问题。我正在以编程方式创建一个UITextField,如下所示 UItextField *mobileNumberField = [[UITextField alloc] initWithFrame:CGRectMake(10, 195, 300, 41)]; mobileNumberField.delegate = self; mobileNumberField.borderStyle = UITextBorderStyleRoundedRect; [mobileNumberF

我提出了我面临的问题。我正在以编程方式创建一个
UITextField
,如下所示

UItextField *mobileNumberField = [[UITextField alloc] initWithFrame:CGRectMake(10, 195, 300, 41)];
mobileNumberField.delegate = self;
mobileNumberField.borderStyle = UITextBorderStyleRoundedRect;
[mobileNumberField.layer setCornerRadius:14.0f];
mobileNumberField.placeholder = @"Mobile Number";
[self.paymentsHomeView addSubview:mobileNumberField];
输出是附加的图像

我不知道它为什么在拐角处断裂。帮助我修复我的文本字段,如下图所示


提前谢谢

更新您的以下内容

    UITextField *mobileNumberField = [[UITextField alloc] initWithFrame:CGRectMake(10, 195, 300, 41)];
    mobileNumberField.delegate = self;
    mobileNumberField.layer.borderWidth = 1.0f;
    mobileNumberField.layer.borderColor = [UIColor lightGrayColor].CGColor;
    mobileNumberField.
//    mobileNumberField.borderStyle = UITextBorderStyleRoundedRect;
    [mobileNumberField.layer setCornerRadius:14.0f];
    mobileNumberField.placeholder = @"Mobile Number";
    [self.paymentsHomeView addSubview:mobileNumberField];

只要去掉这条线

mobileNumberField.borderStyle = UITextBorderStyleRoundedRect;
并添加此代码

    [mobileNumberField setBackgroundColor:[UIColor whiteColor]];
    [mobileNumberField.layer setBorderColor:[UIColor grayColor].CGColor];
    [mobileNumberField.layer setBorderWidth:1.0];

我希望这对你有帮助。

这是你问题的解决办法

UITextField * txtField = [[UITextField alloc]initWithFrame:CGRectMake(0, 0, 200, 50)];

[txtField setBorderStyle:UITextBorderStyleNone];

[txtField.layer setMasksToBounds:YES];
[txtField.layer setCornerRadius:10.0f];
[txtField.layer setBorderColor:[[UIColor lightGrayColor]CGColor]];
[txtField.layer setBorderWidth:1];
[txtField setTextAlignment:UITextAlignmentCenter];
[txtField setContentVerticalAlignment:UIControlContentVerticalAlignmentCenter];
[self.view addSubview:txtField];

拐角被截断的原因是文本字段有一个封闭视图。当您设置角半径时,应用于该视图,因此内部文本字段的角似乎被剪切-实际上它们甚至没有更改

解决方案是将
UITextField
放在
UIView
中,将textfield borderstyle设置为none。然后将边界和拐角半径规范应用于uiview。请注意borderColor,它与UITextField borderColor非常接近(如果不相同的话)

截至编写之日,已在Xcode 7.3.1、Swift 2.2、iOS 8和9中测试并运行

斯威夫特:

textField.borderStyle = UITextBorderStyle.None
textBorderView.layer.cornerRadius = 5
textBorderView.layer.borderWidth = 1
textBorderView.layer.borderColor = UIColor.lightGrayColor().colorWithAlphaComponent(0.2).CGColor
Swift 3解决方案:

textField.layer.borderWidth = anyWidth
textField.layer.borderColor = anyColor
textField.layer.cornerRadius = textField.frame.size.height/2
textField.clipsToBounds = true
我已经编写了单独的函数来设置swift中任意图层的边框和角半径,你只需将任意视图的图层、边框宽度、角半径和边框颜色传递给下面的函数即可

` func setBorderAndCornerRadius(layer: CALayer, width: CGFloat, radius: CGFloat,color : UIColor ) {
        layer.borderColor = color.cgColor
        layer.borderWidth = width
        layer.cornerRadius = radius
        layer.masksToBounds = true
    }
`swift解决方案:

textField.layer.borderWidth = anyWidth
textField.layer.borderColor = anyColor
textField.layer.cornerRadius = textField.frame.size.height/2
textField.clipsToBounds = true

以下代码在Swift 5,XCode 11.4中给出了以下结果。
肯定可以添加更多的铃声和口哨。我认为这是一个很好的MVP

    naviTextField = UITextField.init(frame: CGRect(x: 0, y: 0, width: (self.navigationController?.navigationBar.frame.size.width)!, height: 21))
    self.navigationItem.titleView = naviTextField
    naviTextField.becomeFirstResponder()
    naviTextField.placeholder = "Type target name here"
    naviTextField.borderStyle = .roundedRect
    naviTextField.layer.cornerRadius = 5.0
    naviTextField.textAlignment = .center

默认情况下,文本字段采用UITextBorderStyleNone。如果删除上面的行,则没有边框。您可以改为设置borderColor。已尝试设置边框颜色。但是它不适用,因为没有边界。谢谢你。。!从Joshi的答案中找到了解决方案。它是有效的,但当我应用它时,占位符文本和txtField的前导边框之间没有任何位置。你知道如何解决这个问题吗(我试着在占位符的开头空白:“占位符文本”而不是“占位符文本”,但不起作用)?它的创建循环文本字段