为什么我的按钮会在iOS模拟器中更改填充?

时间:2018-02-04 03:43:09

标签: ios swift xcode user-interface scaling

我正在尝试在iOS应用中为视图添加按钮。在Main.storyboard文件中,按钮显示如下:

enter image description here

然而,每当我启动模拟器时,按钮显示为:

enter image description here

如果有帮助,我将按钮与自定义类配对,包括:

import UIKit

class RoundedButton: UIButton {
    override func awakeFromNib() {
        super.awakeFromNib()

        layer.borderWidth = 1
        layer.borderColor = UIColor.blue.cgColor
        contentEdgeInsets = UIEdgeInsets(top: 5, left: 5, bottom: 5, right: 5)
    }
}

但我不相信这是问题的原因。我认为问题源于我对xCode中扩展如何工作缺乏了解,但我无法找到有关如何解决此问题的任何资源。

谢谢!

3 个答案:

答案 0 :(得分:0)

为按钮添加约束并检查。如果添加必要的约束,它将是完美的。

答案 1 :(得分:0)

约束用于告诉设备对象应该在哪里以及它们的大小,即使使用不同的设备,也可以创建模式。请记住,您始终必须配置X,Y,宽度和高度,以便完美地放置元素。标签除外,有时不需要宽度和高度限制。

对于您的按钮,添加约束以水平,垂直,宽度和高度对齐应该有效。

答案 2 :(得分:0)

为按钮添加必要的约束。您可以添加故事板或以编程方式添加。

在storyboard中,您可以添加如下限制: enter image description here

以编程方式:

      let horConstraint = NSLayoutConstraint(item: yourButton!, attribute: .centerX, relatedBy: .equal,
                                         toItem: view, attribute: .centerX,
                                         multiplier: 1.0, constant: 0.0)
  let verConstraint = NSLayoutConstraint(item: yourButton!, attribute: .centerY, relatedBy: .equal,
                                         toItem: view, attribute: .centerY,
                                         multiplier: 1.0, constant: 0.0)
  let widConstraint = NSLayoutConstraint(item: yourButton!, attribute: .width, relatedBy: .equal,
                                         toItem: view, attribute: .width,
                                         multiplier: 0.95, constant: 0.0)
  let heiConstraint = NSLayoutConstraint(item: yourButton!, attribute: .height, relatedBy: .equal,
                                         toItem: view, attribute: .height,
                                         multiplier: 0.95, constant: 0.0)

  view.addConstraints([horConstraint, verConstraint, widConstraint, heiConstraint])