4

ビューに追加された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.layerCAShapeLayer *passwordLayer = password.layer定義されています。

問題は、上記を実行した後、フィールドがまったく得られないことです。実際にはそこにありますが、すべてが透明で、テキストと背景色です。それを元に戻す方法や、間違っていることを修正する方法がわかりません。

私が正しくしようとしていることをどのように正確に行うことができますか?

4

1 に答える 1

5

サブレイヤーとして追加しなければならなかったマスクを設定する代わりに、私がしなければならなかったようです:

[username.layer addSublayer:usernameMaskLayer];

// instead of the old

[usernameLayer setMask:usernameMaskLayer];

そして、背景を設定するためsetFillColorに、usernameMaskLayer.

于 2013-11-12T08:21:17.947 に答える