如何在中间创建带文本的水平线?

时间:2017-03-23 22:43:40

标签: objective-c

非常是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;
}();

这很有效,可以让“或”出现,但我不知道如何获得两边的水平线。

3 个答案:

答案 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使其大小适合标签和屏幕情况:

  1. 将视图#1固定在屏幕的左边缘和标签的右侧。
  2. 将视图#2固定在屏幕的右边缘和标签的左侧。
  3. 制作2个视图,标签具有相同的垂直中心。