2012-12-05 59 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