ビューに追加されたUITextField
があり、デフォルトの外観を変更しようとしています。
私が望むのは、角の半径を変更することですが、上/下のみです。私はこれを行うことでそうしています:
UIBezierPath *usernameMaskPathWithRadiusTop = [UIBezierPath bezierPathWithRoundedRect:username.bounds
byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight)
cornerRadii:CGSizeMake(4.0, 4.0)];
UIBezierPath *passwordMaskPathWithRadiusBottom = [UIBezierPath bezierPathWithRoundedRect:password.bounds
byRoundingCorners:(UIRectCornerBottomLeft | UIRectCornerBottomRight)
cornerRadii:CGSizeMake(4.0, 4.0)];
CAShapeLayer *usernameMaskLayer = [[CAShapeLayer alloc] init];
usernameMaskLayer.frame = username.bounds;
usernameMaskLayer.path = usernameMaskPathWithRadiusTop.CGPath;
CAShapeLayer *passwordMaskLayer = [[CAShapeLayer alloc] init];
passwordMaskLayer.frame = password.bounds;
passwordMaskLayer.path = passwordMaskPathWithRadiusBottom.CGPath;
[username setTextAlignment:NSTextAlignmentLeft];
[username setClearButtonMode:UITextFieldViewModeWhileEditing];
usernameLayer.shadowOpacity = 0.0;
[usernameLayer setMask:usernameMaskLayer];
[password setTextAlignment:NSTextAlignmentLeft];
[username setClearButtonMode:UITextFieldViewModeWhileEditing];
passwordLayer.shadowOpacity = 0.0;
[passwordLayer setMask:passwordMaskLayer];
ここUITextField *username
で 、UITextField *password
およびは説明どおりCAShapeLayer *usernameLayer = username.layer
にCAShapeLayer *passwordLayer = password.layer
定義されています。
問題は、上記を実行した後、フィールドがまったく得られないことです。実際にはそこにありますが、すべてが透明で、テキストと背景色です。それを元に戻す方法や、間違っていることを修正する方法がわかりません。
私が正しくしようとしていることをどのように正確に行うことができますか?