2017-03-18 104 views
2

说我有3个视图,每个视图中都有一个标签。现在我想要的是,基于标签内容,这些标签的内容会根据不同的文本大小和长度为按钮的不同实例单击我希望我的视图适合标签大小。如何实现动态视图

如果视图是红色,红色应括基于标签的高度和宽度,其改变每次标签的文本..

类VerticalFitLayout:VerticalLayout的{

override init(width: CGFloat) { 
    super.init(width: width) 
} 

required init(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 

override func layoutSubviews() { 

    var height: CGFloat = 0 
    var zeroHeightView: UIView? 

    for i in 0..<subviews.count { 
     var view = subviews[i] as UIView 
     height += yOffsets[i] 
     if view.frame.height == 0 { 
      zeroHeightView = view 
     } else { 
      height += view.frame.height 
     } 
    } 

    if height < superview!.frame.height && zeroHeightView != nil { 
     zeroHeightView!.frame.size.height = superview!.frame.height - height 
    } 

    super.layoutSubviews() 

} 

}

我是否正在朝着正确的方向前进?

看到这个图片http://imageresize.org/Output/6e2d4598-355c-4c0c-ae9e-9ce0a4fad574.png 但我想要的是一个视图将根据文本而改变。标签接收来自一个阵列或网络服务的任何输入..

+0

你可以使用自动布局。 https://stackoverflow.com/questions/42340026/make-label-only-as-wide-as-it-needs-to-be/42340556#42340556 –

+0

http://imageresize.org/Output/6e2d4598-355c- 4c0c-ae9e-9ce0a4fad574.png。这是我想要的..我想调整基于文本长度的视图,我只有一个视图将接收可变长度的文本 –

+0

是的这是可能的自动布局。 –

回答

0

使用自动版式

这样的事情,和的UILabel行数设置为0。

enter image description here

enter image description here

+0

首先,谢谢,我明白你的意思,但说如果我只有红色视图,并且所有来自橙色红色和蓝色的内容都应该以红色显示,并且每次只显示一个按钮。这将需要根据UIlabel的内容来形成我的红色视图(我的意思是高度),它从数组中动态获取内容..可以单独使用自动布局吗? –

+0

您是否希望在运行时根据内容动态更改视图高度?自动布局应该照顾它。 –

+0

是的..好吧,我会试试看,谢谢.. –