0

編集#2

私が得た回答に基づいて、私は人々を(そしてその後私自身も)混乱させているようです。それでは、この質問をいくつか単純化してみましょう -

指定されたすべての TextFields を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 の境界線の色では、私の問題は解決しません。

達成したいスタイルと色は次のとおりです。

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この背景で表示されるようにします。この時点で、アプリでこれを実行するたびに、フィールドはすべて、ストーリーボードで設定した背景値 (現在は境界線なし) を取得します。

助けてくれてありがとう!

4

2 に答える 2

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];
}
于 2014-01-14T17:49:52.093 に答える