什么是利用iOS 6新的自动布局function的最佳方式,同时还能在早期版本的iOS上提供旧设备的兼容性?
我已经在IBdevise了自定义Cell,将其分类,并将我的网点连接到我的自定义类。 在单元格内容中有三个子视图:UIView(cdView)和两个标签(titleLabel和emailLabel)。 根据每行可用的数据,有时我想要在我的单元格中显示UIView和两个标签,有时候只有两个标签。 我想要做的是设置约束,如果我把UIView属性设置为隐藏,或者我将从超级视图中移除它,两个标签将移动到左侧。 我试图设置UIView领先的约束为10px的Superview(单元格内容)和UILabels领先约束为10像素到下一个视图(UIView)。 后来在我的代码 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(IndexPath *)indexPath { … Record *record = [self.records objectAtIndex:indexPath.row]; if ([record.imageURL is equalToString:@""]) { cell.cdView.hidden = YES; } 我隐藏我的cell.cdView,我想标签移动到左边,但他们留在细胞中的相同位置。 我试图从超级视图中删除cell.cdView,但它也没有工作。 我附上图片来澄清我的情况。 我知道如何以编程方式进行此操作,而我并不是在寻找解决scheme。 我想要的是在IB中设置约束,我期望如果其他视图被删除或隐藏,我的子视图将dynamic地移动。 是否有可能在自动布局的IB中做到这一点? …..
我理解在Interface Builder中alignment,分级和分配视图的旧的Struts和Springs方法。 然而,我似乎无法弄清楚如何使用Xcode 5自动布局均匀分布视图。有一种方法可以使用Xcode 4来完成,但是这个选项已经不存在了。 我有7个button排列在一个垂直的堆栈。 在3.5英寸的布局上,它看起来不错,当我在4“布局中预览屏幕时,所有的button都保持紧凑,最后一个button下面有大量的空间。 我希望他们保持相同的高度,但我希望他们之间的空间能够弯曲,以便他们可以散布在屏幕上。 我已经能够获得button的高度弯曲和填充空间,但这不是我想要的行为。 我想学习如何使用自动布局来取代我的老泉的行为,但我似乎无法find任何方式通过Interface Builder来做到这一点。 我确定顶部button既可以是顶部边缘的固定空间,也可以是顶部边缘的比例空间,同样也适用于底部button和底部边缘。 这些对我来说不那么重要,我也很好。 但我真的需要弄清楚如何均匀分配视图中每个项目之间的额外空间。
使用swift在我的OS X中遇到过这个错误: “这个应用程序正在从后台线程修改自动布局引擎,这可能会导致引擎崩溃和奇怪的崩溃,这将在未来的版本中引发exception。 我有一个我的NSWindow ,我换窗口的contentView视图。 当我尝试在窗口上执行一个NSApp.beginSheet ,或者当我将一个subview添加到窗口时,出现错误。 试图禁用自动调整的东西,我没有任何使用自动布局。 有什么想法吗? 有时候很好,没有任何反应,其他时候它完全打破了我的UI ,什么也没有加载
我有一个滚动视图和背后的图像视图,我用笔尖填充它。 我正在使用自动布局。 我有一个底部空间,超级查看和顶部空间来超级查看这两个意见。 图像视图正是我想要的。 对于iPhone 5,这是我想要的地方。 而对于其他的iPhone,它保持在屏幕的底部,所以它调整正确。 滚动视图看起来就在iphone 5上,但在其他手机上它没有被resize,所以它滚动下面的应用程序的视图。 我在日志中得到这些消息: 2012-11-21 10:42:38.576 LCHApp[12604:907] Unable to simultaneously satisfy constraints. Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that […]
我该如何以编程方式(以及在哪种方法中)configuration高度取决于文本的UILabel? 我一直在尝试使用Storyboard和代码的组合来设置它,但无济于事。 大家在设置lineBreakMode和numberOfLines时候推荐sizeToFit 。 但是,无论我把代码放在viewDidLoad: , viewDidAppear:或viewDidLayoutSubviews我都无法使它工作。 要么我把这个盒子放得太长,不能长长的文字,要么我把它做得太大,不能缩小。
我无法find关于Cocoa Autolayout关于内容拥抱和压缩阻力之间差异的苹果文档的明确答案。 有人可以解释他们的用法和区别?
注意 :这个问题提出后,事情已经开始了。 在这里看到一个很好的最近的概述。 在自动布局之前,您可以通过存储框架,设置锚点和恢复框架来更改视图图层的锚点,而无需移动视图。 在一个自动布局的世界中,我们不再设置框架,但是约束似乎不适合将视图的位置调整回到我们想要的位置。 您可以破解约束来重新定位您的视图,但是在旋转或其他resize事件时,这些事件会再次失效。 以下明智的想法不起作用,因为它创build了“布局属性的无效配对(左和宽)”: layerView.layer.anchorPoint = CGPointMake(1.0, 0.5); // Some other size-related constraints here which all work fine… [self.view addConstraint: [NSLayoutConstraint constraintWithItem:layerView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:layerView attribute:NSLayoutAttributeWidth multiplier:0.5 constant:20.0]]; 我的意图是将layerView的左边缘,调整后的锚点的视图设置为其宽度的一半加上20(我想要从layerView视图的左边缘插入的距离)。 是否有可能改变锚点,而不改变视图的位置,在自动布局布局的视图? 我是否需要使用硬编码值并在每次旋转时编辑约束? 我希望不是。 我需要更改定位点,以便在对视图应用转换时,可以获得正确的视觉效果。
自动布局正在使我的生活困难。 从理论上讲,当我转换的时候它会非常有用,但是我似乎一直在争取。 我做了一个演示项目,试图find帮助。 有没有人知道如何使视图之间的空间平均增加或减less每当视图resize? 这里有三个标签(手动间隔垂直): 我想要的是他们调整他们的间距(而不是视图大小)均匀旋转。 默认情况下,顶部和底部视图朝中心方向挤压:
我正在使用AdBannerView更新旧应用程序,当没有广告时,它会滑出屏幕。 当有广告时,它会在屏幕上滑动。 基本的东西。 旧的风格,我在一个animation块中设置框架。 新的风格,我有一个IBOutlet决定Y位置的约束,在这种情况下,它是从超视图底部的距离,并修改常数。 – (void)moveBannerOffScreen { [UIView animateWithDuration:5 animations:^{ _addBannerDistanceFromBottomConstraint.constant = -32; }]; bannerIsVisible = FALSE; } – (void)moveBannerOnScreen { [UIView animateWithDuration:5 animations:^{ _addBannerDistanceFromBottomConstraint.constant = 0; }]; bannerIsVisible = TRUE; } 横幅移动,正如所料,但没有animation。 更新:我重新观看了包含animation的WWDC12video“ 掌握自动布局的最佳实践 ”。 它讨论了如何使用CoreAnimation更新约束。 我已经尝试了下面的代码,但得到完全相同的结果。 – (void)moveBannerOffScreen { _addBannerDistanceFromBottomConstraint.constant = -32; [UIView animateWithDuration:2 animations:^{ [self.view setNeedsLayout]; }]; bannerIsVisible = FALSE; } […]