我想要一个无边框的 UITextField,但下面有一个 1 或 2 像素高的引导线,用于强调该字段。需要明确的是,我不希望 UITextField 内的文本带有下划线,而是该字段,无论是空的还是充满文本的。
在 Google Material Design 的这个例子中可以看到一个例子:
所以当然我可以坚持使用显示纯色的 UIImage 并将其适合该空间,但这似乎不太优雅,如果我担心,有没有更好的方法更“正确”和面向 future 关于我的代码将如何在几代 iOS 上运行以及谁知道哪些设备?
p.s.宁愿使用 Obj-C 从头开始做这件事,也不愿找到一个库。
最佳答案
实际上,我昨天才这样做...子类 UITextField ,这将起作用。
注意:虽然使用 textFieldDidBeginEditing: 和 textFieldDidEndEditing: 通过 NSNotificationCenter 或委托(delegate)方法来更改行高和颜色会更干净。
- (void)setup
{
self.hairlineLayer = [CALayer layer];
self.hairlineLayer.backgroundColor = [UIColor materialTextDarkDividerColor].CGColor;
[self.layer addSublayer:self.hairlineLayer];
}
- (void)layoutSubviews
{
[super layoutSubviews];
CGFloat hairlineHeight = 0;
if (self.isFirstResponder) {
self.hairlineLayer.backgroundColor = [UIColor redColor].CGColor;
hairlineHeight = 1.4;
} else {
self.hairlineLayer.backgroundColor = [UIColor grayColor].CGColor;
hairlineHeight = 1/[UIScreen mainScreen].scale;
}
self.hairlineLayer.frame = CGRectMake(0, CGRectGetHeight(self.bounds) - hairlineHeight, CGRectGetWidth(self.bounds), hairlineHeight);
}
关于ios - 在 UITextField 下放置一行的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30944028/