Ios 什么';It’在UITextField下放置一行的正确方法是什么
我希望有一个无边界的UITextField,但下面有一条1或2像素高的引导线,在字段下面加下划线。要明确的是,我不希望只在UITextField中的文本加下划线,而是要在字段中加下划线,不管它是空的还是满的 Google Material Design的示例中有一个示例: 因此,我当然可以只插入一个显示纯色的UIImage,并将其与该空间相匹配,但这似乎并不十分优雅,如果我担心我的代码将如何在几代iOS上运行,谁知道会在什么设备上运行,有没有更好的方法更“正确”和更经得起未来考验Ios 什么';It’在UITextField下放置一行的正确方法是什么,ios,objective-c,underline,Ios,Objective C,Underline,我希望有一个无边界的UITextField,但下面有一条1或2像素高的引导线,在字段下面加下划线。要明确的是,我不希望只在UITextField中的文本加下划线,而是要在字段中加下划线,不管它是空的还是满的 Google Material Design的示例中有一个示例: 因此,我当然可以只插入一个显示纯色的UIImage,并将其与该空间相匹配,但这似乎并不十分优雅,如果我担心我的代码将如何在几代iOS上运行,谁知道会在什么设备上运行,有没有更好的方法更“正确”和更经得起未来考验 p、 美国宁
p、 美国宁愿使用Obj-C从头开始做这件事,也不愿找到一个库。事实上,我昨天刚刚做了这件事。。。子类UITextField,这将起作用 注意:使用textFieldDidBeginEditing:和textFieldDidEndEditing:通过NSNotificationCenter或委托方法更改行高和颜色会更简洁
- (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);
}
创建一个新的全局类 在GlobalClass.h中声明一个方法
+(void)UnderLineStyleTextField:(UITextField *)textField;
在GlobalClass.m中定义一个方法
+(void)UnderLineStyleTextField:(UITextField *)textField
{
CALayer *textFieldbottomBorder = [CALayer layer];
textFieldbottomBorder.frame = CGRectMake(0.0f, textField.frame.size.height - 1, textField.frame.size.width, 1.0f);
textFieldbottomBorder.backgroundColor = [UIColor blackColor].CGColor;
[textField.layer addSublayer:textFieldbottomBorder];
}
在ViewController中导入GlobalClass
从ViewDidLoad调用GlobalClass方法
[GlobalClass UnderLineStyleTextField:txtForgotPasswods];
太好了,谢谢,顺便问一下,为什么要使用1/[UIScreen mainScreen]。灰色条的比例是1.4,但编辑颜色没有分割?我想要1.4,所以编辑时它有点厚,我使用1/[UIScreen mainScreen]。比例是因为这是UITableViewCells的确切分割宽度,它总是为分隔符提供一个一致的好尺寸。是的,但我很困惑,这完全是我的问题,哈哈,但是做1.4/[UIScreen mainscreen.scale]有意义吗;出于同样的原因,你不能单独使用1.0?我问你只是因为我困惑,而不是因为我认为你错了,我只是简单的困惑巴西人!是的,当然这听起来也是个好主意,但是只要使用你想要的任何尺寸的分隔器,任何看起来适合你的!冷静点,我的朋友。我实现了一些非常接近这一点的东西,但当我对其使用自动布局约束时,文本区域内的文本会向底线移动一两个像素,不确定这是否是我的简单标题更改,这会发生在你身上吗?