vag*_*ant 10 uibutton ios swift
它似乎不像UIButton instrinsicSize和/或sizeToFit考虑到标题左边缘插入,或者某些东西搞砸了我的期望.
为了演示,我在视图中有两个自定义类型按钮,标题都是"按钮".我想在标题左侧的按钮中添加图像.
var image = UIImage(named: "circledPlay")
image = image?.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate)
self.button1.setImage(image, forState: UIControlState.Normal)
self.button1.invalidateIntrinsicContentSize()
self.button1.sizeToFit()
self.button2.setImage(image, forState: UIControlState.Normal)
self.button2.titleEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0)
self.button2.invalidateIntrinsicContentSize()
self.button2.sizeToFit()
Run Code Online (Sandbox Code Playgroud)
结果如下:
请注意第二个按钮被截断.
所以我的问题是,如果有人之前已经看过这个(并希望有一个解决方案)或者我感到困惑,这表现得如预期的那样(并且希望知道正确的方法)?
rde*_*mar 10
正如文档中所述,对于titleEdgeInsets
:"按钮不使用此属性来确定intrinsicContentSize
和sizeThatFits:
".因此,设置titleEdgeInsets只会移动标题标签,但不会影响按钮的大小.如果您希望按钮在内容周围有更多填充,请同时设置contentEdgeInsets.我认为你不需要打电话sizeToFit
,或者invalidateIntrinsicContentSize
(但我不确定).
您可以使用contentEdgeInsets
和titleEdgeInsets
来实现它。
button2.setImage(image, for: .normal)
button2.backgroundColor = UIColor(white: 0.9, alpha: 1.0)
button2.contentEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 10)
button2.titleEdgeInsets = UIEdgeInsetsMake(0, 10, 0, -10)
button2.setTitle("Button", for: .normal)
button2.sizeToFit()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5592 次 |
最近记录: |