为啥我的 UIButton 不在我认为应该在的位置?

Posted

技术标签:

【中文标题】为啥我的 UIButton 不在我认为应该在的位置?【英文标题】:Why is my UIButton not where I think it should be?为什么我的 UIButton 不在我认为应该在的位置? 【发布时间】:2016-08-31 20:03:57 【问题描述】:

我有一个 UIView self.addProjectContainer,它的框架为 (0 198; 300 30)。我正在创建一个 UIButton 并以编程方式将其添加为该 UIView 的子视图。这是保存对按钮的引用的属性:

var addProjectButton:UIButton?

这就是我在 ViewController 的 viewDidLoad 方法中所做的:

self.addProjectButton = UIButton(type: UIButtonType.System)
self.addProjectButton!.translatesAutoresizingMaskIntoConstraints = false
self.addProjectButton!.contentMode = UIViewContentMode.Redraw
self.addProjectButton!.frame = CGRect(x: 0, y: 0, width: 220, height: 30)
self.addProjectButton!.setTitle("+ Add Project", forState: UIControlState.Normal)
self.addProjectContainer.addSubview(self.addProjectButton!)

包含 UIView 的位置正确,我通过给它一个背景颜色并使用调试器来验证这一点:

(lldb) po self.addProjectContainer
<UIView: 0x7fa43c019a40; frame = (0 198; 300 30); autoresize = RM+BM; layer = <CALayer: 0x7fa43c019bb0>>

我的问题是该按钮没有显示在该视图中,这是调试器告诉我的:

(lldb) po self.addProjectButton
▿ Optional<UIButton>
  - Some : <UIButton: 0x7fa43ac596a0; frame = (-10 -309; 94 30); opaque = NO; layer = <CALayer: 0x7fa43ac58dd0>>

如果我将按钮更改为标签:

var addProjectLabel:UILabel?

并将其添加到视图中,如下所示:

let frame:CGRect = CGRect(x: 0, y: 0, width: 220, height: 30)
self.addProjectLabel = UILabel(frame: frame)
self.addProjectLabel!.text = "+ Add Project"
self.addProjectContainer.addSubview(self.addProjectLabel!)

标签准确地显示在我希望按钮出现的位置:

(lldb) po self.addProjectLabel
▿ Optional<UILabel>
  - Some : <UILabel: 0x7fc560d2d2a0; frame = (0 0; 220 30); text = '+ Add Project'; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x7fc560d40a00>>

如何让按钮像标签一样显示在正确的位置?这让我发疯了。

【问题讨论】:

【参考方案1】:

删除关于translatesAutoresizingMaskIntoConstraints 的行。它会导致您的 frame 被忽略。

或者,如果您要将translatesAutoresizingMaskIntoConstraints 设置为false,则使用约束而不是frame 定位。

【讨论】:

谢谢。我不知道 translatesAutoresizingMaskIntoConstraints。我的按钮是我现在预期的位置。

以上是关于为啥我的 UIButton 不在我认为应该在的位置?的主要内容,如果未能解决你的问题,请参考以下文章

表单选择下拉选项不在正确的位置

为啥位置:绝对;和底部:0;不在身体的底部? [复制]

为啥我的 UIButton 不起作用?

如何在UIScrollView上进行UIButton修复?

DW在使用css+div排版时,为啥有的div标签不在固定位置呢,网页放大后,就会移动,求高手解答!谢谢

为啥 Xcode 认为我的变量在应该返回 NSString 时却返回了 NSURL?