Tag: autolayout

如何获得iOS 8的UICollectionViewCells的自动布局大小? (在iOS 8中,systemLayoutSizeFittingSize返回高度为零的大小)

由于iOS 8 [UIColletionViewCell systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]返回高度为0的大小。 代码如下: 要确定iOS 7中UICollectionView中单元格的大小,我使用systemLayoutSizeFittingSize:在使用自动布局的xib文件中定义的单元格上。 大小取决于作为我的xib文件中的UICollectionViewCell的子视图的UILabel的字体大小。 标签的字体被设置为UIFontTextStyleBody 。 所以基本上单元格的大小取决于在iOS 7中设置的字体大小。 这是代码本身: + (CGSize)cellSize { UINib *nib = [UINib nibWithNibName:NSStringFromClass([MyCollectionViewCell class]) bundle:nil]; // Assumption: The XIB file only contains a single root UIView. UIView *rootView = [[nib instantiateWithOwner:nil options:nil] lastObject]; if ([rootView isKindOfClass:[MyCollectionViewCell class]]) { MyCollectionViewCell *sampleCell = (MyCollectionViewCell*)rootView; sampleCell.label.text = @"foo"; // sample […]

所有这些自动布局更新方法有什么区别? 都需要吗?

在下面的代码中,这四个方法被称为布局推理。 我有点困惑,为什么他们都需要,但是他们做了什么不同的事情。 他们在这个过程中使用自动布局使单元格的高度dynamic化。 (从这个问题从这个知识库采取)。 [cell setNeedsUpdateConstraints]; [cell updateConstraintsIfNeeded]; [cell.contentView setNeedsLayout]; [cell.contentView layoutIfNeeded]; 这是从这个单元格的代码块的高度: – (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { RJTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; [cell updateFonts]; NSDictionary *dataSourceItem = [self.model.dataSource objectAtIndex:indexPath.row]; cell.titleLabel.text = [dataSourceItem valueForKey:@"title"]; cell.bodyLabel.text = [dataSourceItem valueForKey:@"body"]; cell.bodyLabel.preferredMaxLayoutWidth = tableView.bounds.size.width – (kLabelHorizontalInsets * 2.0f); [cell setNeedsUpdateConstraints]; [cell updateConstraintsIfNeeded]; [cell.contentView setNeedsLayout]; [cell.contentView layoutIfNeeded]; CGFloat […]

如何在界面构build器中对视图进行约束来满足Xcode 8中的所有iphone屏幕

我一直在尝试以下内容,如钉住,纵横比,垂直间距,水平/垂直间距,前/后空格; 但从iPhone SE以上的所有iPhone屏幕并不一致。

在iPhone上使用Xcode Auto Layout来设置不同的图像尺寸

使用肖像中的iPhone自动布局function,我不希望在iPhone 4S上使用iPhone 6+上的游戏angular色的大小相同的UIImageViews。 4S字符需要更小,否则他们会看起来太大。 使用自动布局如何更改iPhone之间的图像大小,因为他们似乎都变成相同的大小,无论约束。

AutoLayout:UIImageView和Aspect Fit内容模式

我试图把UIImageView放在父视图的中心。 图片必须保持原有的宽高比,也不能超过父母的界限。 所以风景图像应该受父母的宽度限制,肖像图像应该保持原始比例所需的垂直空间。 对于AutoLayout听起来很简单,对吧? 这是我的UIImageView设置: 父母垂直居中 在父母水平居中 imageView.width <= superview.width imageView.height <= superview.height 我还将contentMode设置为Aspect Fit 。 对于小于设备屏幕的小图像,一切工作真的很好,但由于某种原因,我的UIImageView比大型图像的底层UIImage占用更多的空间(注意绿色背景 – imageView.backgroundColor = [UIColor greenColor] )。 为什么发生这种情况? 我不是一个AutoLayout专家,因为我的约束看起来很合理。 如果我使用像200×400这样的小图像,那么UIImageView在屏幕上显示200×400点,没有额外的绿色区域。 我想添加边框和圆angular,在这种情况下显然不能正常工作。

组表TableView,使用自调整节标题,重新加载后,如果向上滚动,tableview将跳转

我正在做一个像这样的tableview:一个推特和评论; 在这里input图像描述 我已经尝试了几种架构。对此我没有find足够的问题和讨论。 我认为这是一个非常有意义的问题,所以我发布这些架构的性能和局限性。 首先,将整个单元格用作带有注释的twitter,根据模型将生成哪个注释视图。细胞使用自定义的自动布局高度。 这个架构可以工作。但是如果一个twitter有很多评论(30或更多),在旧的iPhone(4s,5,5s等等)中,fps会下降到40。只有这个架构的弱点。 其次,由于性能瓶颈,我想也许我可以在twitter单元格中放置一个评论表格视图,而twitter单元格和embedded的评论单元格也使用自定义的自动布局高度。但是经过尝试,我发现twitter单元格不能确认其高度,因为embedded的评论表视图无法确认其高度本身。所以我需要计算embedded评论表视图的高度来确认twitter单元格的高度。 这种架构也运行良好,但其性能瓶颈与第一种架构相同。 第三,也是最重要的,使用部分标题作为twitter,单元格作为注释。也就是说,一个部分是带有注释的整个twitter。部分标题和单元格都使用自动调整自动布局高度。 这个架构的性能是最好的,即使twitter有多达50多个评论,即使在iPhone5桌面滚动非常顺利,fps至less55.但有一些奇怪的问题,我不能解决。 我滚动到底部,tableview将重新加载下一页page.After reloadData后,第一个小问题是该节头解雇,但滚动后出现(后来我发现,如果我设置tableview标题,这个问题出现,如果我删除tableview标题,这问题消失了,所以困惑)。第二个也是比较重要的问题是,如果向上滚动,tableview会“跳跃”。下面是gif的演示。(不知道怎么把大的gif发布到StackOverflow,对不起) https: //github.com/yutanchi/GroupTableViewSectionHeaderJump/blob/master/tableviewjump.gif 我认为原因是tableview使用估计部分标题高度,而不是实际部分标题高度。 我已经search了很多信息,但没有什么可以帮助我。我很困惑,如果节头的自我调整机制是一样的细胞的自我大小机制。为什么自我大小的细胞可以执行正确的行为,自我大小的节头不。 因为这个架构有明显的性能优势,所以我想弄清楚自定义部分头部有什么问题,解决这些烦人的问题并使用架构。有人解释或讨论这个问题吗?

如果将UICollectionViewCell子类的contentView.translatesAutoResizingMaskToConstraints设置为“false”?

TL; DR 当尝试通过自动布局来设置UICollectionViewCells的大小时,即使是一个简单的例子,也可以轻松获得自动布局警告。 我们是否应该设置contentView.translatesAutoResizingMaskToConstraints = false来摆脱它们? 我正在尝试创build一个UICollectionView 自定义自动布局单元格 。 在viewDidLoad中: let layout = UICollectionViewFlowLayout() layout.estimatedItemSize = CGSize(width: 10, height: 10) collectionView.collectionViewLayout = layout 我的细胞是非常基本的。 这是一个宽度和高度为75的单一蓝色视图,用于testing目的。 约束是通过将视图固定在所有4个边上的超视图来创build的,并给它一个高度和宽度。 class MyCell: UICollectionViewCell { override init(frame: CGRect) { view = UIView() super.init(frame: frame) view.backgroundColor = UIColor.blueColor() contentView.addSubview(view) installConstraints() } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") […]

应该给予什么约束来增加相对于设备屏幕尺寸的图像视图的大小而不降低图像清晰度

我必须在一个通用的应用程序中显示图像视图,并且它的尺寸应该随着每个设备的屏幕devise而增加,而不会降低图像质量。 给imageview的图像是一个静态图像。 如果我使用静态宽度和高度约束使用大小类它将工作。 但我不认为这是正确的方式。 如果我使用宽度和高度比例的超视图,它增加了图像的高度,但图像清晰度减less了iPad。 任何build议将是有益的。

使用自动布局使UILabel和UITextField相邻

我正在尝试在UITextField实例文本字段旁边放置一个UILabel实例标签,就像在“iOS设置”对话框中所做的一样。 我在Florian Kuglers FLKAutoLayout扩展( https://github.com/dkduck/FLKAutoLayout )的帮助下使用自动布局和约束。 当我只为标签设置一个主要约束,并在标签和文本字段之间设置空间约束时,标签和文本字段宽度将根据其内容进行调整。 (底部图片) 但是,当我也设置了文本字段的尾部限制时,只有文本字段宽度被调整为其内容,但标签被拉伸。 (上图) 我想performance得相反,所以文本字段将被拉伸,标签被调整到其内容。 为什么iOS决定伸缩标签而不是文本框? [self addSubview:self.label]; [self addSubview:self.textField]; [self.label alignLeadingEdgeWithView:self predicate:@"10"]; [self.textField constrainLeadingSpaceToView:self.label predicate:@"10"]; // difference between top and bottom pciture // [self.textField alignTrailingEdgeWithView:self predicate:@"-25"];

属性不可用:8.0版本之前的iOS版本的第一个基线布局属性

我在XCode 6.1中收到以下警告 。 属性不可用:8.0版本之前的iOS版本的第一个基线布局属性 我想,这也导致我的iOS 7.x版本崩溃 。