Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 仅在顶部或底部具有角半径的UITextField_Ios_Objective C_Ios7 - Fatal编程技术网

Ios 仅在顶部或底部具有角半径的UITextField

Ios 仅在顶部或底部具有角半径的UITextField,ios,objective-c,ios7,Ios,Objective C,Ios7,我有一个添加到视图中的UITextField,我正在尝试更改它的默认外观 我想要的是更改拐角半径,但仅在顶部/底部。我是这样做的: UIBezierPath *usernameMaskPathWithRadiusTop = [UIBezierPath bezierPathWithRoundedRect:username.bounds byRoundingCorn

我有一个添加到视图中的
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
定义如下

问题是,在我执行上面的操作之后,我没有得到任何字段,实际上它们在那里,但所有内容都是透明的,文本和背景色。我不知道该如何找回它,也不知道该如何修复我做错的任何事情


我怎样才能正确地完成我正在尝试的工作?

似乎我要做的不是设置一个必须添加为子层的掩码:

[username.layer addSublayer:usernameMaskLayer];

// instead of the old

[usernameLayer setMask:usernameMaskLayer];

然后为了设置背景,我只需在
usernameMaskLayer

setFillColor
尝试设置
CAShapeLayer
fillColor
。我已经尝试过:
[passwordMaskLayer setFillColor:[[UIColor whiteColor]CGColor],没有任何效果