Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 自定义键盘的约束问题_Ios_Swift_Keyboard_Nib - Fatal编程技术网

Ios 自定义键盘的约束问题

Ios 自定义键盘的约束问题,ios,swift,keyboard,nib,Ios,Swift,Keyboard,Nib,在自定义键盘中向视图添加约束时遇到问题。我在这里简化了我的问题,只需注意我确实计划添加更多的子视图,这样就不用担心我的键盘没有“下一个键盘”按钮或类似的东西。我想要的是确保黑色正方形始终位于键盘视图的中心,视图如下所示: 在没有限制的情况下,我在iPhone4s-5s上实现了这一点: 这正是我想要的。唯一的问题是,在6号公路上,我发现: 这显然偏离了中心,我们不能这样做。因此,我在中心正方形上添加了一些约束条件(宽度和高度=90,并与superview的中心x和y对齐),但我在iPhone4s上

在自定义键盘中向视图添加约束时遇到问题。我在这里简化了我的问题,只需注意我确实计划添加更多的子视图,这样就不用担心我的键盘没有“下一个键盘”按钮或类似的东西。我想要的是确保黑色正方形始终位于键盘视图的中心,视图如下所示:

在没有限制的情况下,我在iPhone4s-5s上实现了这一点:

这正是我想要的。唯一的问题是,在6号公路上,我发现:

这显然偏离了中心,我们不能这样做。因此,我在中心正方形上添加了一些约束条件(宽度和高度=90,并与superview的中心x和y对齐),但我在iPhone4s上得到了以下结果:


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

我在玩弄这个,找到了解决办法。它与在视图控制器中加载nib的时间有关。我的代码如下所示(解决方案只有一行,用注释标记)

据我所知,self.view自动设置为正确的大小,但您可能添加的子视图没有相同的豪华,所以只需设置框架。老实说,我可能一开始就应该意识到这一点,但现在你知道了

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
}