自定义键盘的约束问题

Constraint Issues With Custom Keyboard

我在向自定义键盘中的视图添加约束时遇到问题。我在这里简化了我的问题,请注意我确实计划添加更多的子视图,所以不要担心我的键盘没有 "next keyboard" 按钮或类似的东西。我想要的是确保黑色方块始终位于键盘视图的中央,视图如下所示:

没有限制,我在 iPhone4s-5s 上得到这个:

这正是我想要的。唯一的问题是在 6 上我得到这个:

这显然偏离了中心,我们不能那样做。所以我在中心正方形上添加了一些约束(宽度和高度 = 90,并与超级视图的中心 x 和 y 对齐),但后来我在 iPhone4s 上得到了这个:

而且我在每个模拟器中都得到了类似的东西。当它从笔尖加载时,我尝试调整视图的大小,但没有骰子。我怎样才能使那个正方形居中?

我正在研究这个问题并找到了解决方案。它与您何时在视图控制器中加载笔尖有关。我的代码看起来像这样(解决方案只有一行,用注释标记)

var kView: UIView!

override func viewDidLoad() {
    super.viewDidLoad()
    loadInterface()
}

func loadInterface() {
    var kNib = UINib(nibName: "TrapType", bundle: nil)
    kView = kNib.instantiateWithOwner(self, options: nil)[0] as! UIView
    let screenSize: CGRect = UIScreen.mainScreen().bounds
    //Below is the line that solved the problem. 
    kView.frame = view.frame
    view.addSubview(kView)
    view.backgroundColor = kView.backgroundColor
}

据我了解,self.view 会自动设置为正确的大小,但您可能添加的子视图没有同样的奢侈,所以只需设置框架。老实说,这是我一开始就应该意识到的事情,但你知道了。