Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.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
Ios8 iOS自定义键盘自动布局_Ios8_Autolayout_Nslayoutconstraint_Custom Keyboard - Fatal编程技术网

Ios8 iOS自定义键盘自动布局

Ios8 iOS自定义键盘自动布局,ios8,autolayout,nslayoutconstraint,custom-keyboard,Ios8,Autolayout,Nslayoutconstraint,Custom Keyboard,当用户改变方向(如下图所示)时,我应该在Interface Builder中为自定义键盘添加哪些约束,使其与内置键盘完全相同(所有按钮水平拉伸,垂直收缩,间距相等) 这非常简单(如果您知道如何进行自动布局) 因此,首先,只需将您想要的按钮(或UIView)拖动到背景视图。并按照您的要求手动布局它们 我从第一行(Q~p)开始,约束可以这样设置 Q->容器的前导空间:4px p->容器的尾随空间:4px Q-W,W-E,E-R,R-T,T-Y,Y-U,U-I,I-O,O-p都有类似4px的水平空间

当用户改变方向(如下图所示)时,我应该在Interface Builder中为自定义键盘添加哪些约束,使其与内置键盘完全相同(所有按钮水平拉伸,垂直收缩,间距相等)

这非常简单(如果您知道如何进行自动布局)

因此,首先,只需将您想要的按钮(或UIView)拖动到背景视图。并按照您的要求手动布局它们

我从第一行(Q~p)开始,约束可以这样设置

Q->容器的前导空间:4px

p->容器的尾随空间:4px

Q-W,W-E,E-R,R-T,T-Y,Y-U,U-I,I-O,O-p都有类似4px的水平空间

有趣的部分是确定宽度,简单地让Q-W,W-E,E-R,R-T,T-Y,Y-U,U-I,I-O,O-p具有相等的宽度。我们为什么要设置这个约束?因为一旦你固定了Q前导、P尾随和所有的间隙,将它们设置为相等宽度将自动让所有第一行按钮平均分享键盘宽度的其余部分(这是我们的按钮宽度)。忘了提一下,WERTYUIOP应该把y放在Q的中心

现在,您刚刚确定了第一行的按钮宽度

如何确定高度?想法是一样的,键盘的总高度由上边距(Q顶部的间隙)和下边距(空格以下的间隙,或123)、行与行之间的间隙和4*按钮高度组成

因此,您可以像这样设置约束,使用Q、A、Z和123来确定按钮高度

Q->容器顶部空间:4px 123->容器底部空间:4px Q-A、A-Z、Z-123都有垂直空间4px 然后将它们的高度设置为相等,就像我们对按钮宽度所做的一样

然后,您可以向W-p添加约束,使高度与Q相等(我们刚刚确定了Q、A、Z、123的高度)

现在第一行被正确地确定,接下来我们考虑第二行。我们需要第二行的x位置的参考基准,您可以为G添加约束,使中心水平到容器视图,然后将第二行中所有按钮的间距设置为与第一行相同(在本例中为4px)。现在你有第二排了

对于第三排,这真的很简单,你只需要把每个按钮放在第二排。比如说,

Z->x到S的中心 ->等宽

请记住,我们已经确定了Z的y位置和高度,因此不再需要这样做。对于X-M,对于y,将其居中至Z,对于X,将其居中至第二行按钮,与第二行按钮等宽,与Z等高

我希望您能理解,autolayout的主要部分是找到基础,您需要有一个起点,以便所有元素在容器视图大小更改时都知道它们应该在哪里


希望这能有所帮助。

这对我不起作用,第一行按钮的宽度增加不均匀,因此第一行仅显示4个按钮!是的,我设置了等宽限制!!!!