Swift UILabel两侧有水平线条

时间:2016-05-20 10:30:25

标签: ios xcode swift uilabel

我正在尝试创建一个左侧和右侧有2条水平线的UILabel,如下所示:

enter image description here

有没有人知道在Swift中这样做的最佳方法?中心的内容文本将发生变化,因此我想确保它能够适应。我真的很想创建一种可重复使用的UIView类,但我不确定从哪里开始?

谢谢!

6 个答案:

答案 0 :(得分:3)

您可以在标签的两侧拍摄两个UIview高度1 or 2像素。所以它看起来像线!

你应该将背景颜色设置为该视图的黑色!

希望这会有所帮助:)

答案 1 :(得分:0)

使用一个黑色背景和高度为1px的UIView,将标签背景设置为白色,将其文本对齐到中心,并将UILabel对齐到UIView的中心(因为标签白色背景将覆盖UIView,所以不需要2个视图)。 / p>

答案 2 :(得分:0)

选择一个photos/{photos}/comments/{comments}高度为2.根据UIView设置leading & Trailing

现在将一个Super View背景色设为白色,然后将UILabel放到线条视图中。

使两个Vertically Center相同。

你的工作已经完成。

如需更多帮助,请参阅下图。

enter image description here

答案 3 :(得分:0)

没必要2 UIView's。

1 UIView 并提供背景黑色颜色。添加必要的约束条件: height = 2

在中心放置1个标签并提供所需的约束

答案 4 :(得分:0)

您可以在UILabel

上使用扩展程序
public extension UILabel {
    func drawLineOnBothSides(labelWidth: CGFloat, color: UIColor) {

        let fontAttributes = [NSFontAttributeName: self.font]
        let size = self.text?.size(attributes: fontAttributes)
        let widthOfString = size!.width

        let width = CGFloat(1)

        let leftLine = UIView(frame: CGRect(x: 0, y: self.frame.height/2 - width/2, width: labelWidth/2 - widthOfString/2 - 10, height: width))
        leftLine.backgroundColor = color
        self.addSubview(leftLine)

        let rightLine = UIView(frame: CGRect(x: labelWidth/2 + widthOfString/2 + 10, y: self.frame.height/2 - width/2, width: labelWidth/2 - widthOfString/2 - 10, height: width))
        rightLine.backgroundColor = color
        self.addSubview(rightLine)
    }
}

这将在标签的两侧添加宽度为1.0的水平线。如果您没有为标签添加文字,它将在中心显示两条水平线,两条线之间有一些空格。

答案 5 :(得分:0)

正如其他人所提到的,您可以使用三种观点来实现这一目标:

example image

将“视图”添加到场景以用作容器。我把这个视图叫做“Lined Label Holder”。

在该容器中添加两个视图,一个用于在标签的任一侧生成一行。

在两个视图之间添加标签,并为其提供一些文本。由于衬里标签支架上的“height = Test.height”约束,此标签的固有高度用于计算容器的高度。

允许标签在添加文本的情况下生长,并且线条总是从文本边缘开始5px并延伸到容器的边缘,其宽度可以独立设置。

此图像显示了所需的约束:

constraints