2012-12-05 32 views
18

我提出了我面临的问题。我正在创建一个UITextField编程如下。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]; 

输出是附加图像。

enter image description here

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

enter image description here

在此先感谢..!

回答

27

只是删除这条线......

mobileNumberField.borderStyle = UITextBorderStyleRoundedRect; 

,并添加该代码也..

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

我希望这会帮助你..

10

更新你像下面。

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]; 
+0

文本字段需要UITextBorderStyleNone默认。如果我删除上面的行,就没有边界。 – iOS

+0

您可以改为设置borderColor。 –

+0

尝试设置边框颜色。但它不适用,因为没有边界。 – iOS

1

下面是解你的问题的

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]; 
+0

它正在工作,但是当我应用这个时,在占位符文本和txtField的前导边框之间没有地方。你知道如何解决这个问题(我试图把占位符的开头放在这样的地方:“placeholderText”而不是“placeholderText”但不工作)? –

3

切角的原因是因为文本字段存在封闭视图。当你设置角落半径时,适用于该视图,因此内部文本字段的角落似乎被切割 - 实际上它们甚至没有改变。

解决的办法是把里面UITextFieldUIView,设置文本框的边框样式为无。然后将边框和圆角半径指定应用于uview。请注意borderColor,它与UITextField borderColor非常接近(如果不相同)。

作为写入,测试和在Xcode 7.3.1,夫特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 
0

夫特3溶液:

我已经写分开功能设置边框和圆角半径在迅速的任何一层,你只是任何视图层,边框宽度,拐角半径和边框颜色传递到下面的函数

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

`

3
textField.layer.cornerRadius=textfield.frame.size.height/2; 

textField.clipsToBounds=YES; 
+0

它创建圆形文本字段 – Miti