Tag: 布局

AutoLayout视图使应用程序在popViewController上崩溃

最终更新 – 修正 我已经解决了这个问题 看起来,虽然玩耍(这是我在Swift中使用AutoLayout的第一个项目),我改变了contentCompressionResistancePriority和contentHuggingPriority为我的一些意见。 把这个代码拿出来,把我的所有视图重新设置为IB的默认值,解决了我的问题。 初始职位 所以我在iOS上使用AutoLayout来定位我的dynamic视图。 这一切都很好,很容易,直到我popup我的视图控制器之一。 该应用程序崩溃与一个非常有用的错误消息,是这样的: … internal error. Cannot find an outgoing row head for incoming head UIImageView:0xd049d50.Width{id: 730}, which should never happen.' … 我一直在search网页,但我无法修复。 我发现,虽然我的代码中有一行可以有所作为。 在我所说的视图控制器中,我有一大堆正在使用AutoLayout的UIImageView ,以及我从networking上加载的图像。 如果不是将接收到的图像设置给它们,我就像我的情况一样,在Swift中设置一个空的( [[UIImage alloc] init]或者UIImage() ),它不会再崩溃了。 我甚至尝试从应用程序包中设置一个虚拟的图像,但也使它崩溃了。 我们欢迎所有的build议! 更新1 再看一遍代码,我还发现有一个与这些UIImageViews相关的约束,也使得崩溃消失时消失。 这是一个长宽比约束,看起来像这样 imageView.addConstraint(NSLayoutConstraint(item: imageView, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: imageView, attribute: NSLayoutAttribute.Height, multiplier: 8.0 […]

iOS的ScrollView需要约束的位置或高度

-ViewController –View —ScrollView (Top,Bottom,Leading,Trailing spaces to superview set to 0) —-ContentView (Top,Bottom,Leading,Trailing spaces to superview set to 0, Width equals with View (ViewController's child)) —–Label1 —–etc… 如果我为我的内容视图(例如1000)设置了一个特定的高度限制,ScrollView工作正常,但是我得到了一个静态的ContentView 1000,这不是我的目标,因为我的contentView获得了dynamic内容,所以它应该是内容的高度需要。 如果我删除了我的ContentView的高度限制,Xcode说: Missing Constraints: ScrollView need constraints for: Y position or height ScrollView实际上是固定在顶部和底部,所以我不知道为什么Xcode想为ScrollView的高度约束… 当我想让ContentView高度成为内容需要的高度时,正确的方法是什么?

离线UITableViewCells(用于大小计算)不尊重大小class?

我在UITableView中使用自动布局和大小类,并根据其内容使用自定义大小的单元格。 为此,我使用的方法对于每种types的单元格,都会保留该单元格的非屏幕实例,并使用systemLayoutSizeFittingSize来确定正确的行高度 – 此方法在此StackOverflowpost和其他位置有很好的解释。 这工作很好,直到我开始使用大小类。 具体而言,我已经定义了常规宽度布局中文本的边距约束的不同常量,因此iPad上的文本周围会有更多的空白。 这给了我以下结果。 看起来,新的一组约束被认可(有更多的空白),但是行高计算仍然返回与没有应用大小类特定约束的单元相同的值。 屏幕外单元中布局过程的某些部分没有考虑窗口的尺寸等级 。 现在我认为这可能是因为屏幕外视图没有超视图或窗口,因此在systemLayoutSizeFittingSize调用发生时没有任何大小的类特征可以引用(即使它似乎使用调整后的约束利润率)。 我现在通过添加屏幕尺寸的单元格作为UIWindow创build后的子视图来解决这个问题,从而得到所需的结果: 以下是我在代码中所做的: func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { let contentItem = content[indexPath.item] if let contentType = contentItem["type"] { // Get or create the cached layout cell for this cell type. if layoutCellCache.indexForKey(contentType) == nil { if let cellIdentifier = CellIdentifiers[contentType] { […]

iOS6上的旋转行为不同

我做了一个基于标签的应用程序。 没有什么需要在景观模式,但一些意见。 它在iOS5上运行正常,我对结果非常满意。 然而,与iOS6和没有搞乱任何东西,它现在旋转所有的意见,结果并不好。 因为它是一个基于标签的应用程序,所以我需要在景观中的几个视图是modalViews。 这样,我没有搞乱tabbar,我只需要在构build选项的“支持的方向”设置中select肖像,并设置: – (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft); return (interfaceOrientation == UIInterfaceOrientationLandscapeRight); } 关于我想要的风景。 现在使用iOS6,这个视图也是在纵向模式下,不pipe是什么,即使旋转设备也不显示横向模式。 同样,如果我允许“支持的方向”上的所有方向,它们都会旋转,不pipe我上面的方法。 在所有的观点,我没有选中故事板上的“使用Autolayout”框。 任何帮助吗? * 编辑 **现在,我看到它,我在设备上的应用程序工作正常。 我已经安装了一个促销代码,而不是从Xcode,只看我的客户是否有问题。 幸运的是,他们不是。 问题依然存在。

UIScrollView和约束

我想把UIImageView放在UIScrollView的顶部,当我将UIScrollView约束到View Controller的两边,并将UIImageView约束到顶部,并使UIImageView的宽度等于UIScrollView时,它使UIImageView的方式比UIScrollView更宽,比想象的要高很多。 任何想法我做错了什么? 故事板: 预习: