Objective c 如何在中间创建文本的水平行?

Objective c 如何在中间创建文本的水平行?,objective-c,Objective C,我对Objective C非常陌生,但我正在查看现有应用程序的源代码,所以这里有很多东西需要筛选 我正在尝试创建如下内容: -------或------- …仅使用实心水平线,而不是虚线 我将or文本定义为: _orLabel = ^{ UILabel* label = [[UILabel alloc] init]; label.translatesAutoresizingMaskIntoConstraints = NO; label.textColor = [

我对Objective C非常陌生,但我正在查看现有应用程序的源代码,所以这里有很多东西需要筛选

我正在尝试创建如下内容:

-------或-------

…仅使用实心水平线,而不是虚线

我将or文本定义为:

    _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;
}();

这对于获取或显示非常有用,但我不知道如何获取两侧的水平线。

我将对UILabel进行子类化并重写。最简单的方法是调用super以便绘制文本。现在,您仍然处于图形上下文CGContext中,因此可以使用普通的Quartz绘图命令绘制水平线。

最简单的方法是使用某些Unicode字符,这将为您提供一条实线

label.text = @"───────── or ─────────";

该文本使用了一系列方框图,浅水平字符U+2500。

我将使用IB在标签的每一侧添加一个视图。使用黑色背景使视图的高度为1或2,并使用自动布局使其大小适合标签和屏幕情况:

将视图1定位到屏幕的左边缘和标签的右侧。 将视图2定位到屏幕的右边缘和标签的左侧。 使两个视图和标签具有相同的垂直中心。
有关绘图命令的更多信息,请参见我的书:这里还有一个覆盖drawTextInRect的实际示例:;目标是不同的,即在标签周围放一个方框,但想法完全相同:向下滚动到从我自己的一个应用程序开始的段落,我在其中将UILabel子类化。当然,你可以更进一步,自己画一幅图像,显示一条线、一个词或一条线,并将其显示为UIImage或视图的自绘制。对于像这样简单的东西,你几乎不需要UILabel。在某些情况下,这应该是可行的,但有点粗糙-如果你有特定的宽度限制,字符不能任意截断,并且可能很难确保行在比例字体中的长度相同,否则。。。此外,并非所有字体都具有方框图形字符。