我在
的文本字段中添加了一个图层(底部边框)- (void) addBorderToTextField:(UITextField *)textField borderWidth:(CGFloat)borderWidth
{
CALayer *border = [CALayer layer];
border.borderColor = [UIColor darkGrayColor].CGColor;
border.frame = CGRectMake(0, textField.frame.size.height - borderWidth, textField.frame.size.width, textField.frame.size.height);
border.borderWidth = borderWidth;
[textField.layer addSublayer:border];
textField.layer.masksToBounds = YES;
}
现在我想以编程方式删除此边框
我在下面试过但它崩溃了。不确定最后一个对象是否包含所需的对象。
- (void) replaceBorderFromTextField:(UITextField *)textField borderWidth:(CGFloat)borderWidth
{
CALayer *border = [CALayer layer];
border.borderColor = [UIColor darkGrayColor].CGColor;
border.frame = CGRectMake(0, textField.frame.size.height - borderWidth, textField.frame.size.width, textField.frame.size.height);
border.borderWidth = borderWidth;
NSArray *subLayers = [textField.layer sublayers];
CALayer *existingBorder = [subLayers objectAtIndex:[subLayers count] -1];
[textField.layer replaceSublayer:existingBorder with:border];
textField.layer.masksToBounds = YES;
}
如何删除?
答案 0 :(得分:0)
这是一个简单的识别问题。幸运的是,CALayer符合任意键的KVC标准。因此,您可以在setValue:forKey:
图层上使用border
创建它,例如,为其提供值为@"name"
的{{1}}密钥。稍后,当需要将其删除时,您可以通过循环查找子@"border"
键valueForKey:
@"name"
的子图层来识别正确的图层。 (实际上,找到@"border"
密钥不是@"name"
的图层可能就足够了!)