【问题标题】:How to vertically align a UILabel used as a leftView in a UITextField with the textField's text?如何将 UITextField 中用作 leftView 的 UILabel 与 textField 的文本垂直对齐?
【发布时间】:2012-07-05 04:13:16
【问题描述】:

我使用UILabel 作为UITextField 的leftView。问题是 textField 的文本高于标签的文本。

这是我目前使用的代码

UILabel *startsWith = [[UILabel alloc] init];
startsWith.font = [UIFont systemFontOfSize:14];
startsWith.textColor = [UIColor blackColor];
startsWith.backgroundColor = [UIColor clearColor];
startsWith.text = @"Text";
[startsWith sizeToFit];
self.textField.leftViewMode = UITextFieldViewModeAlways;
self.textField.leftView = startsWith;

我尝试稍微改变标签的框架,但没有成功...

如何对齐两个文本?

【问题讨论】:

  • 你可以尝试继承UITextField然后覆盖- (CGRect)leftViewRectForBounds:

标签: ios xcode ios5 uitextfield uilabel


【解决方案1】:

您可以创建一个容器视图,将UILabel 向上定位1px。

    UIView * v = [[UIView alloc] init];
    v.backgroundColor = [UIColor clearColor];

    UILabel *startsWith = [[UILabel alloc] init];
    startsWith.font = self.textfield.font;
    startsWith.textAlignment = self.textfield.textAlignment;
    startsWith.textColor = [UIColor blackColor];
    startsWith.backgroundColor = [UIColor clearColor];
    startsWith.text = @"Text";
    [startsWith sizeToFit];

    startsWith.frame = CGRectOffset(startsWith.frame, 0, -1);
    v.frame = startsWith.frame;
    [v addSubview:startsWith];
    self.textfield.leftViewMode = UITextFieldViewModeAlways;
    self.textfield.leftView = v;

【讨论】:

  • 完美运行!谢谢!有没有办法减少标签和文本输入之间的水平空间?
  • 不客气。也许您可以通过减小左视图的宽度来减小它,在这种情况下是 v 的框架,我现在无法正确测试它。如果您需要更多特殊功能,也许子类化和方法覆盖是最好的方法。看HERE。
  • 减少左视图的宽度成功了!再次感谢!!
  • 不错。甚至不用费心使用自动布局约束自定义 leftVew。真是让人头疼:)
猜你喜欢
  • 2022-01-05
  • 1970-01-01
  • 1970-01-01
  • 2013-05-12
  • 2014-05-25
  • 1970-01-01
  • 2013-12-26
  • 2011-03-16
  • 2010-11-06
相关资源
最近更新 更多