当前位置: 首页 > 面试题库 >

尺寸更改时在哪里更新自动版式约束?

宫弘亮
2023-03-14
问题内容

UIView沿着一个容器的底部布置了几个UIView。我希望这些视图的宽度始终相等,并始终拉伸以共同填充包含视图的宽度(如底部的表情符号键盘按钮)。我要解决的方法是为其中一个视图设置相等的宽度,然后仅将该视图的宽度约束更新为,superviewWidth / numberOfViews这将导致所有其他视图更新为相同的值。

我想知道更改约束常数的代码应该放在哪里。需要在键盘首次出现在屏幕上之前进行设置,并在旋转设备时进行更新。

我第一次尝试解决方案是将其放入updateViewConstraints并通过计算宽度containerView.frame.size.width。但是,此方法在加载时会被调用两次,第一次是正确计算值,但是第二次由于某种原因,containerView宽度为0.0。另一个问题是,旋转时,containerView的宽度不是旋转后的值,而是旋转前的当前值。但是我不想等到轮换完成后再更新约束,因为按钮将是原始大小,然后更改,这会给用户带来不便。

我的问题是:在哪里放置此代码最合适?有没有更好的方法来计算宽度是多少?我可以保证它将始终与屏幕宽度完全相同。我在Xcode
6中使用了大小类,因此willRotateToInterfaceOrientation不赞成使用类似的方法。


问题答案:

没有理由手动更新宽度:

  1. 将所有视图以相等的宽度放置在视图中,彼此之间没有间距
  2. 给所有这些都添加一个相等的宽度约束
  3. 添加宽度为0的约束,以确保侧面之间的间距
  4. 降低一个或多个相等宽度约束的优先级,以防万一宽度无法均分。

然后自动布局将为您处理所有事情。



 类似资料:
  • Many web-developers forget to write width and height attributes for <img> tags which leads to poor UX. This action helps you to automate this process: simply place caret inside <img> tag and run this

  • 我有一个名为sampleImage的图像,我试图沿着x轴和y轴拉伸它,如下所示,当它处于横向时,它根本不起作用 然后,我在viewDidLayoutSubviews()中做了如下操作, 如果设备在中,这是有效的,但是一旦您将其旋转到并返回,所有更改都将消失。如何确保这些尺寸在旋转时保持不变?

  • 问题内容: 我正在使用Eclipse作为IDE。当我右键单击该项目,然后单击maven update时,我的Java版本更改为1.5。这是我到目前为止所做的,我遵循了此处列出的所有步骤 http://qussay.com/2013/09/13/solving-dynamic-web-module-3-0-requires- java-1-6-or-newer-in-maven-projects/

  • 我将“Java构建路径”更改为“Workspace default jre 1.8.0_25” 然后将“Java编译器”更改为1.8 然后更改了“项目方面”>Java>1.8 将pom.xml java版本更改为1.8 经过这一切之后,当我点击“Maven Update”时,我的java版本会自动变为1.5。同样在上述步骤中,前两步的版本也自动变为1.5。我该怎么解决这个?

  • 问题内容: 我有以下代码: 如您所见,我要在单击按钮时更改大小。可能吗?上面的代码不起作用,我的意思是大小没有改变。如何动态更改尺寸? 感谢致敬。编辑: 交换选择一个JList行的面板。 ViewPanel#changeView(),这将交换面板: 问题答案: 使用布局管理器时,永远不要使用setSize()。布局管理器的工作是确定大小。您可以通过设置指定的大小或最小或最大大小来向布局管理器提供提

  • 问题内容: 在做一个小发布并将其标记之前,我想更新package.json以反映该程序的新版本。 有没有一种方法可以自动编辑文件? 需要帮助吗? 问题答案: 可能是正确的答案。只给一个替代我建议咕噜凸点。它由angular.js的一名成员维护。 用法: 如果仍然使用grunt,那可能是最简单的解决方案。