我非常是Objective C的新手,但我正在查看现有应用的源代码,所以这里有很多要筛选的内容。
我正在尝试创建这样的东西:
--------------或--------------
...仅使用实线水平线而不是破折号。
我将“或”文本定义为:
_orLabel = ^{
UILabel* label = [[UILabel alloc] init];
label.translatesAutoresizingMaskIntoConstraints = NO;
label.textColor = [UIColor blackColor];
label.font = [UIFont mainFontWithSize:[UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline].pointSize];
label.adjustsFontSizeToFitWidth = YES;
label.textAlignment = NSTextAlignmentCenter;
label.text = NSLocalizedString(@"or", nil);
[view addSubview:label];
return label;
}();
这很有效,可以让“或”出现,但我不知道如何获得两边的水平线。
答案 0 :(得分:1)
我会继承UILabel并覆盖drawTextInRect:
。最简单的方法是调用super
以便绘制文本。现在您仍处于图形上下文(CGContext)中,因此您可以使用普通的Quartz绘图命令绘制水平线。
答案 1 :(得分:0)
最简单的方法是使用某些可以为您提供实线的Unicode字符。
label.text = @"───────── or ─────────";
该文字使用了一系列“BOX drawings LIGHT HORIZONTAL”字符(U + 2500)。
答案 2 :(得分:0)
我会使用IB在标签的每一面添加一个视图。使视图的高度为1或2,背景为黑色,并使用autolayout使其大小适合标签和屏幕情况: