在Xcode 8中自动调整问题

时间:2016-09-16 07:38:53

标签: ios storyboard swift3 autoresize xcode8

=== 编辑 ========

此问题现已在 Xcode 8.1 中解决。我查过了。

=====

我不太了解自动布局。所以,我在我的所有应用程序中使用自动调整选项,对我来说没问题。我可以毫无问题地满足我的所有要求。

现在在Xcode 8中,我已将我的旧swift项目迁移到swift 3.现在问题出现了。

Storyboard SS

参见图片,我已经设置了Autoresizing,并且它在所有设备中都没有问题,直到现在这个项目都在AppStore中运行,因此我无法显示UI或故事板。

现在我必须在项目中做一些更新。所以我现在正在使用Xcode 8。但是我的自动调整功能不正常,因为所有控件都位于中心,UI被搞砸了。

Output image

问题仍存在于设备中。我也检查了模拟器和设备。但问题也存在。任何建议和帮助将不胜感激。提前谢谢。

编辑:

昨天在运行时只有问题,但今天的故事板也改变了像这个图像的视图

Storyboard image

这意味着整个UI设计搞砸了。这很奇怪。

9 个答案:

答案 0 :(得分:7)

面对同样的问题。作为我的观点,当我们使用自动调整并仅将内部autoresizingMask设置为任何视图控制器时,会出现此问题。像,

enter image description here

如果我们当时也使用border autoresizingMask而不是面临这个问题。像,

enter image description here

我不知道这是xcode 8的实际错误或在xcode 8中删除此功能。

所以,最后我的建议是我们需要在xcode 8中使用自动布局。

答案 1 :(得分:7)

请尝试取消选中xib或storyboard中的自动调整大小。并在viewDidLoad设置[_scrollView setAutoresizesSubviews:YES];

如果这可以解决您的问题,请尝试

修改:如果故事板取消选中Resize view from NIB选项。

答案 2 :(得分:3)

我不确定故事板,但我找到了一个xib文件的临时解决方案。在“工具”面板(右侧面板)中,选择“文件检查器”选项卡。在Interface Builder Document部分下,选择要在“XCode 7.x”中打开的文件。它会要求您确认您不想使用XCode 8功能,保存文件并关闭它。

enter image description here

答案 3 :(得分:2)

我在Xcode8中也面临同样的问题

我有一个使用scrollView的解决方案

首先使用一个简单的UIView并在scrollView中添加要添加的所有组件,并将该组件提供给autoSizing

并且还可以使用一个scrollView并以编程方式设置视图框架,并设置scrollView contentSize并将您的视图添加到scrollView

同样聪明,在我的情况下,我在viewDidLoad中为swift项目添加此代码

// add view to scrollview

self.scrollObjForNextAppointment.contentSize = CGSize(width:self.scrollObjForNextAppointment.frame.size.width,height:410)

self.viewForScrollContent.frame = CGRect(x:0,y:0,width:self.scrollObjForNextAppointment.frame.size.width,height:410)

self.scrollObjForNextAppointment.addSubview(self.viewForScrollContent)

它为我工作,谢谢!

答案 4 :(得分:2)

Xcode 8 beta 2解决了这个问题!!我现在已经打结了!

答案 5 :(得分:1)

更新此问题似乎已在Xcode 8.1中修复

遇到同样的问题,我发现这里的罪犯是 UIScrollView 元素。只需移动滚动条之外的所有内容,您就会发现一切正常,就像以前一样。

这意味着一种可能的解决方法是将可滚动内容放在普通的UIView中,然后在运行时以编程方式将其替换为UIScrollView。

答案 6 :(得分:1)

通过取消选中“自动调整子视图”到ScrollView

来解决

enter image description here

答案 7 :(得分:0)

主持人在此重复删除了我的答案,请参阅我的答案:

Autoresizing under iOS 10 doesn't work

响应max,是的,调整一堆子视图可能会很痛苦。这就是我建议在滚动视图中添加单个“内容视图”并将所有现有子视图移动到该视图内部的原因。像在滚动视图中一样自动调整内容视图中的子视图,并将内容视图自动调整为滚动视图。

这是内容视图,然后您在viewDidLayoutSubviews中调整大小。

同样,scrollview构造内部的“内容视图”几乎是使用autolayout自动调整大小滚动视图的标准方法,因此它应被视为最佳实践。

这里描述的方法......

https://spin.atomicobject.com/2014/03/05/uiscrollview-autolayout-ios/

我的方法看起来有些复杂,但是我能够在大约15分钟内用大约12个场景和Vc修补故事板。使用自动布局重建所有内容会花费更多,更长时间。

答案 8 :(得分:0)

Apple刚刚推出了XCode 8.2,它为我解决了这个问题。我一直在使用XCode 7.3.1进行与8.1平行的接口设计,但我现在可以使用8.2而没有任何问题。

故事板会根据框架的宽度和高度进行更新,以适应新的视图:'功能。虽然它似乎不会影响在设备/模拟器上运行。

奇怪的是,错误修正在XCode 8.2 release notes中未注明。

原始回答here