问题标签 [autolayout]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3261 浏览

objective-c - 从 NIB 加载并使用 addSubView 显示的视图不遵循约束

我有一个非常简单的视图加载:

这是纵向模式下的全高 4 英寸视网膜视图,状态栏、顶部栏和底部栏设置为无。它具有使图像沿底部对齐的约束。我在应用程序其他地方的控制器中使用类似的视图,它们会调整大小进入可用空间(使用 NavigationBar 和 TabBar)绝对没问题。但是,此视图直接从 nib 加载然后添加似乎忽略了约束。

该视图旨在用于各种情况,例如有/没有导航栏/标签栏的任何组合。

我在 splashView 上尝试了setNeedsLayout,的各种组合。setNeedsUpdateConstraints我也尝试过调用layoutSubviews视图本身。

任何人都可以提供一些建议吗?在这种情况下,我应该以另一种方式来做吗?也许使用 viewController,或者在代码中手动添加约束?

0 投票
4 回答
18991 浏览

objective-c - 自动布局约束 - 键盘

我坚持尝试平滑地为具有自动布局约束的表格视图设置动画。我在我的 .h 中引用了约束“keyboardHeight”,并在 IB 中将其链接起来。我要做的就是在弹出时使用键盘为表格视图设置动画。这是我的代码:

问题是动画块是瞬时的,我看到在键盘完成动画之前出现空白。所以基本上我在键盘动画时看到视图的白色背景。只要键盘正在动画,我就无法使动画持续。

我是以错误的方式接近这个吗?提前致谢!

0 投票
4 回答
56105 浏览

ios - NSLayoutConstraints 是可动画的吗?

我正在尝试为一些视图设置动画,以便它们被横向的巨型键盘挡住。如果我只是为帧设置动画效果很好,但其他人认为这会适得其反,我应该更新 NSLayoutConstraints。但是,它们似乎不是可动画的。有没有人让他们成功地工作?

结果是立即跳到有问题的高度。

0 投票
12 回答
59906 浏览

ios - 使用自动布局时,如何调整 CALayer 的锚点?

注意:自从提出这个问题以来,事情已经发生了变化;有关最近的概述,请参见此处


在自动布局之前,您可以通过存储框架、设置锚点和恢复框架来更改视图层的锚点而不移动视图。

在自动布局的世界中,我们不再设置框架,但约束似乎无法完成将视图位置调整回我们想要的位置的任务。您可以破解约束来重新定位您的视图,但在旋转或其他调整大小事件时,这些再次变为无效。

以下好主意不起作用,因为它创建了“布局属性(左和宽度)的无效配对”:

我的意图是设置左边缘layerView,调整锚点的视图,宽度的一半加上 20(我想要从超级视图左边缘插入的距离)。

是否可以在使用自动布局布局的视图中更改锚点而不更改视图的位置?我是否需要使用硬编码值并在每次旋转时编辑约束?我希望不会。

我需要更改锚点,以便在对视图应用变换时获得正确的视觉效果。

0 投票
1 回答
1704 浏览

objective-c - Resize font size with a change in height by autolayout on a textfield

I have a UITextField that can be resized with autolayout. How can I make the font size automatically smaller when the textfield height gets smaller than the font?

Thanks

0 投票
1 回答
540 浏览

objective-c - iPhone 5 自动布局不正确

新的 iPhone 屏幕搞砸了我的应用程序。在 iPhone 3.5 英寸的屏幕上,一切都显得格格不入。我在同一个故事板中有两个不同的视图,我尝试检测并尝试切换故事板视图,但还没有任何效果。我可以得到一些关于如何在启动时切换到正确视图的代码吗?我是把这段代码放在我的主视图控制器中,还是把它放在我的应用程序委托中?

我的观点是什么样的 http://www.fileden.com/files/2012/6/18/3317719/screenshot7.jpg

0 投票
3 回答
2934 浏览

ios - 纵向模式下的 iOS 自动布局性能问题。[NSIS引擎优化]

我遇到了一个非常奇怪的问题,我想知道是否有人可以在这里帮助我,因为我完全迷路了。

背景:我正在开发一个层次结构相对简单的应用程序。只有几个视图控制器,但有很多高分辨率图像。它们以UIScrollView带有一些文本等的形式呈现。在纵向模式下对其进行测试时,滚动视图根本没有平滑滚动。似乎帧速率下降到大约 4-5 fps。首先,我认为这是因为高分辨率图像。

但后来我把 iPad 调到了横向模式,一切都运行得很顺利。由于我有一个单独的纵向和横向 xib 文件,我认为纵向 xib 中一定有问题。原来,没有。两者都有相同的 VC 类,因此使用相同的代码和两个 xib 几乎相同,除了视图的大小和位置。

为了缩小问题的范围,我使用 Instrument 的 TimeProfiler 来查看导致问题的原因。事实证明,TimeProfiler 显示了一些对[NSISEngine optimize](由 触发NSLayoutConstraint)的调用。在纵向模式下,通话次数更多,而且通话时间更长。在树的下方,我看到在纵向模式下[NSISEngine optimize]调用[NSISEngine fixupIntegralizationViolations],而在横向模式下却没有。

我什至从应用程序中删除了所有视图控制器,除了 rootVC 和 rootVC 提供的另一个。呈现的 vc 仅包含一些图像、按钮和一些动画。它只有一个 xib 用于两个方向,并且(与所有其他方向一样)使用自动布局进行布局。

布局在两个方向上都可以正常工作,并且没有歧义(据我所知。至少po [[UIWindow keyWindow] _autolayoutTrace]没有显示任何内容)。

我附上了vc演示过程的TimeProfile截图。一张是纵向的,一张是横向的。如您所见,在横向调用[NSISEngine optimize]只需要一毫秒,而在纵向调用则需要超过 3000 毫秒。

有谁可以告诉我这是为什么?或者也许知道我能做些什么来找出问题所在?

任何帮助将不胜感激!

谢谢

链接到更大版本的图像:链接

Instruments Timeprofiler 截图

0 投票
7 回答
14023 浏览

ios - 如何在 Xcode/iOS 中设置 UIView 的标识符以调试自动布局?

在 WWDC 2012(掌握自动布局的最佳实践)的一次演讲中,演讲者说您可以在 Xcode 中设置 UIView 标识符来帮助调试自动布局:

UIView 的标识符

这似乎是一个非常好的主意,但在我的 iOS 项目的 Xcode 4.5.1 中,我看不到设置 UIView 的标识。

如何在 Xcode 4.5.1 中设置 UIView 的标识?如果这在 iOS 项目中是不可能的,我怎样才能获得相同的功能?

0 投票
2 回答
3146 浏览

ios - sizeToFit 和约束

我有一个看法:

我的观点

label1 和 label2 之间存在布局约束。按下按钮将文本视图中的文本添加到 label1。之后,标签 1 被调整大小以适合文本(调用 sizeToFit)。调整大小后,约束似乎不起作用:

约束

有人知道如何使约束起作用吗?

我的代码:

0 投票
1 回答
312 浏览

iphone - iOS:删除 UIButton 后 UIScrollView 不滚动

我有一个看起来像这样的视图控制器:

在此处输入图像描述

根视图是滚动视图。当视图第一次加载时,它滚动得很好。

但是,有时我需要使用如下代码删除底部的按钮之一:

但是,这样做之后,滚动视图将不再滚动。(屏幕中间的那些视图会展开,所以总是有很多内容延伸到屏幕底部之外)。

请注意,我需要在这里使用自动布局。我怀疑这是问题的一部分。按钮的移除(以及相关的约束)是否会以某种方式混淆滚动视图?