0

編輯#2如何更改多的UITextField邊框樣式和顏色

它似乎基於我已經得到了,我很迷惑人(以及隨後我自己)的響應。因此,讓我們儘量簡化這個問題,一些 -

我想給所有的TextField在給定的ViewController如下:

textField.layer.cornerRadius=8.0f; 
textField.layer.masksToBounds=YES; 
[[textField layer] setBorderColor:[[UIColor colorWithRed:171.0/255.0 green:171.0/255.0 blue:171.0/255.0 alpha:1.0] CGColor]]; 
textField.layer.borderWidth= 1.0f; 

我應該在哪裏實現這一點,怎麼會這樣,它並沒有給我的錯誤層物業(即當我嘗試-(void)viewDidLoad我得到一個錯誤的每一行指出要做到這一點或後「財產‘層’上ViewController類型的對象未找到」?

編輯#1 的全斷面子類代碼以幫助確定問題:

@interface InputTextField : UITextField 
@end 
@implementation InputTextField 

- (CGRect)textRectForBounds:(CGRect)bounds { 
int margin = 5; 
CGRect inset = CGRectMake(bounds.origin.x + margin, bounds.origin.y, bounds.size.width - margin, bounds.size.height); 
return inset; 
} 

- (CGRect)editingRectForBounds:(CGRect)bounds { 
int margin = 5; 
CGRect inset = CGRectMake(bounds.origin.x + margin, bounds.origin.y, bounds.size.width - margin, bounds.size.height); 
return inset; 

InputTextField *textField=[[InputTextField alloc]init]; 
textField.layer.cornerRadius=8.0f; 
textField.layer.masksToBounds=YES; 
[[textField layer] setBorderColor:[[UIColor colorWithRed:171.0/255.0 green:171.0/255.0 blue:171.0/255.0 alpha:1.0] CGColor]]; 
textField.layer.borderWidth= 1.0f; 
} 

@end 

原帖

我有一個特定的視圖控制器內改變範圍的文本字段的邊框風格和色彩的問題。我在一個視圖中有一堆文本字段,我想調整它。他們都被賦予了自定義類「InputTextField」。然而在這個線程提出的解決方案:UITextField border color不能解決我的問題。

下面是樣式和顏色我想達成的目標:

textField.layer.cornerRadius=8.0f; 
textField.layer.masksToBounds=YES; 
[[textField layer] setBorderColor:[[UIColor colorWithRed:171.0/255.0 green:171.0/255.0 blue:171.0/255.0 alpha:1.0] CGColor]]; 
textField.layer.borderWidth= 1.0f; 

我也進口QuartzCore/QuartzCore.h。我想設置這個,所以我的應用程序中的每個TextField都會出現自定義類InputTextField這個背景。在這一點上,每當我在應用程序中運行它時,這些字段都將採用我在Storyboards中設置的背景值(當前無邊框)。

感謝您的協助!

+0

你把這個代碼在子類? – Jkmn

+0

你在哪裏調用子類中的這段代碼?如果你粘貼完整的子類代碼,它會更容易弄清楚。 –

+0

@Jkmn - 是的,我已經將代碼添加到子類(在我的.m文件的界面設置中)。檢查完整選擇代碼的問題。 – Slider257

回答

1

的問題是在這裏:

- (CGRect)editingRectForBounds:(CGRect)bounds { 

return inset; 

沒有被調用。將您的代碼移到回報之上。

編輯#1

添加到您的子類:

- (void)layoutSubviews { 
    CALayer *layer = self.layer; 
    layer.cornerRadius = 8; 
    layer.borderWidth = 1; 
    layer.borderColor = [UIColor colorWithRed:171.0/255.0 green:171.0/255.0 blue:171.0/255.0 alpha:1.0].CGColor; 
    [super layoutSubviews]; 
} 
+0

可悲的是,沒有解決問題。在編輯RectForBounds部分之間移動它並不會影響字段。 在頂部的RectForBounds部分之間移動它會導致返回錯誤。 – Slider257

+0

我也嘗試刪除以下行: InputTextField * textField = [[InputTextField alloc] init]; 希望它可以工作,因爲我們已經在使用InputTextField,但是它會導致每行的錯誤。將textField定義爲InputTextField會導致錯誤,指出在'UITextField'類型的對象上找不到'Property'層。 – Slider257

+0

澄清 - 我不再使用子類來定義UITextFields的其他屬性,所以你的 - (void)layoutSubviews不幸的不會工作時調用 – Slider257

1

您實例化一個方法內的InputTextField,只是問你CGRect繪製一個矩形,已經沒有多大意義,而是代碼,因爲它位於return語句後永遠不會反正叫。

如果您希望所有InputTextField看起來具體的方式設置layerInputTextField實例化。

用故事板,將是這樣的:

- (id)initWithCoder:(NSCoder *)aDecoder 
{ 
    self = [super initWithCoder:aDecoder]; 
    if (self) { 
     self.layer.cornerRadius=8.0f; 
     self.layer.masksToBounds=YES; 
     [self.layer setBorderColor:[[UIColor colorWithRed:171.0/255.0 green:171.0/255.0 blue:171.0/255.0 alpha:1.0] CGColor]]; 
     self.layer.borderWidth= 1.0f; 
    } 
    return self; 
} 
+0

嗨@Jkmn - 這是行不通的,因爲在VC上找不到圖層屬性。 – Slider257

+0

這段代碼是爲UITextField的子類(你寫的'@interface InputTextField:UITextField')創建的。 。 – Jkmn