Ios 两侧有水平线的Swift UIL标签
我正在尝试创建一个UILabel,其左右两侧有两条水平线,如下所示: 有人知道在Swift中执行此操作的最佳方法吗?中心的内容文本将更改,因此我希望确保它能够适应。我真的很想创建某种可重用的UIView类,但我不确定从哪里开始Ios 两侧有水平线的Swift UIL标签,ios,xcode,swift,uilabel,Ios,Xcode,Swift,Uilabel,我正在尝试创建一个UILabel,其左右两侧有两条水平线,如下所示: 有人知道在Swift中执行此操作的最佳方法吗?中心的内容文本将更改,因此我希望确保它能够适应。我真的很想创建某种可重用的UIView类,但我不确定从哪里开始 谢谢大家! 您可以选择标签两侧的两个高度1或2像素的UIview。所以它看起来像一条线 你应该把背景颜色设置为黑色的视图 希望这会有所帮助:)使用一个背景为黑色且高度为1px的UIView,将标签背景设置为白色,将其文本对齐到UIView的中心,并将UILabel对齐到
谢谢大家! 您可以选择标签两侧的两个高度
1或2
像素的UIview
。所以它看起来像一条线
你应该把背景颜色设置为黑色的视图
希望这会有所帮助:)使用一个背景为黑色且高度为1px的UIView,将标签背景设置为白色,将其文本对齐到UIView的中心,并将UILabel对齐到UIView的中心(不需要两个视图,因为标签白色背景将覆盖UIView).取一个高度为2的
ui视图
。根据超级视图
设置前导和尾随
现在取一个背景色为白色的ui标签
,将垂直居中
放置到线视图中
使两个居中
相同
你的工作完成了
有关更多帮助,请参阅下图
不需要2个UIView 采用1 UIView并为背景提供黑色颜色。添加必要的约束条件:高度=2
将1个标签放在中心并给出所需的约束条件您可以在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的水平线。如果您不为标签添加文本,它将显示两条穿过中心的水平线,中间有一些空格。如其他人所述,您可以使用三个视图来实现这一点: 将视图添加到场景中以用作容器。我将此视图称为“有线条的标签夹” 向该容器添加两个视图,一个用于在标签的任一侧生成线 在两个视图之间添加标签,并为其提供一些文本。由于内衬标签架上的“高度=测试高度”约束,此标签的固有高度用于计算容器的高度 允许标签随着添加的文本而增长,线条始终从文本边缘的5px开始,并延伸到容器的边缘,其宽度可以单独设置 此图显示了所需的约束:
创建uiview子类。为线和uilabel添加2个子视图。为您的目的设置CGRect。您是否使用故事板?这些线的宽度是固定的吗?还是以编程方式完成?+垂直居中+水平间距UIlabel@simpleBob:是的,需要设置适当的约束。如果文本发生更改,这会起什么作用?我希望它是动态的。只要随着文本的增加而增加
UILable宽度即可。