Tag: 布局

在iOS上,边距,边缘插入,内容插入,alignmentmatrix,布局边距,锚点​​之间有什么区别?

似乎有几个不同的选项/术语和iOS社区的人在布局方面使用(例如,UIEdgeInsets是一种types,但有时我听到/读“设置插页”或版面边距vs布局指南)。 我一直能find一个有效的select。 但我不确定我是否正在使用正确的工具。 有人可以帮助提供布局的这些不同方面之间的清晰度,什么时候以最好的方式使用每个方面?

内容拥抱和内容压缩阻力问题,Autolayout约束

我已经修改了这个问题,提供了更多的信息和清晰的信息。 我想有一个dynamic的表格视图单元格,具有灵活的UITextView高度和可选的UIImageView。 根据UITextView和可选的UIImageView的内容大小,单元可以缩小或扩展。 这是我所期望的(下图): 正常大小:TextView的高度是固定的(比如77)。 ImageView的宽度和高度也是固定的(比如130,130) 当TextView的内容大小减小时,单元格缩小,ImageView向上移动。 当ImageView中没有图像时,ImageView不显示,单元格缩小。 以下是观点的结构: mainView是contentView的子视图 topView,textView,bigImageView,bottomView是mainView的子视图 但是,我实际得到如下。 左图:如果内容尺寸较大,则无法看到ImageView。 右图:如果内容大小是一行,ImageView可以看到,但是它的宽度和高度不固定130,130 警告问题如下: 如果我通过select“添加缺less约束”来修复它,我得到的结果如下: 正确的图片显示TextView的高度不再灵活。 TextView的限制,内容拥抱优先权,内容压缩阻力和内在尺寸: 这个TextView没有使用Intrinsic尺寸 ImageView的约束,内容拥抱优先级,内容压缩阻力和内在尺寸: 我用这个ImageView的内在大小 我一直在玩TextView和ImageView的拥抱优先和压缩优先级,但没有运气。 没有结果是我所期望的。 请帮助指出设置中的错误以及如何实现我的目标。

将5个button与Autolay进行水平alignment的最佳方法是什么?

我知道这是一个小新手风格的问题,但我找不到任何有关这个主题,我必须水平alignment我的视图控制器中的多个button。 我尝试了2个方法,第一个是用UIViews和<= width改变约束优先级和其他。 第二个没有UIViews,但button在右舷很好地alignment。 我已经看过斯坦福大学汽车布置课程。 但是我找不到任何解决办法。 我不知道如何alignment多个button或视图可以有人帮助我学习和解决这个问题? 谢谢 !

段落最后两行之间的空格更大?

我使用CTFramesetter绘制文本,我已经将kCTParagraphStyleSpecifierParagraphSpacing , kCTParagraphStyleSpecifierLineSpacing , kCTParagraphStyleSpecifierParagraphSpacingBefore都设置为0.0。 正如你在图像中看到的,一个段落的最后两行之间的空间比其他的要大得多。 这幅图中总共有十五行,我把它们的上升 , 下降 , 领先 , 起源粘贴在下面,我们可以看到,第五和第十行的上升和下降比别人大,我不能“find任何说明符来设置,以避免这种奇怪的布局。 有任何想法吗? 1 ascent=20.639999, descent=3.360000, leading=0.720000, origin.y: 399.000000 2 ascent=20.639999, descent=3.360000, leading=0.720000, origin.y: 374.000000 3 ascent=20.639999, descent=3.360000, leading=0.720000, origin.y: 349.000000 4 ascent=20.639999, descent=3.360000, leading=0.720000, origin.y: 324.000000 5 ascent=25.722656, desecent=13.699219, leading=0.720000, origin.y: 294.000000 6 ascent=20.639999, descent=3.360000, leading=0.720000, origin.y: 258.000000 7 ascent=20.639999, descent=3.360000, leading=0.720000, origin.y: […]

与自动布局一起绘制分隔线

我UISplitViewController某种UISplitViewController 。 现在我需要在主视图和详细视图之间绘制分隔线。 现在我有这个问题: 分隔线应该在视图控制器本身上,还是应该是一个单独的视图? 自动布局怎么样? 设置一个框架是不允许的。 我看到CALayer / CAShapeLayer , drawRect (CoreGraphics)或使用UIView / UILabel的背景颜色的解决scheme。 最后一个应该花费太多的performance在那里的人。 一方面,在UITableViewController本身画线是很舒服的。 或者应该创build一个单独的UIView ? 如果我embedded一个单独的UIView会有更多的约束,它会复杂的事情(将不得不设置单独的宽度)…也应适应方向的变化(例如UITableViewController的大小改变 – >分隔线也应调整)。 我怎样才能添加这样的分割规则? 这里可以看到这样的划分规则:

所有iPad包括iPad Pro在内的常规/常规位置大小限制?

我在我的约束中使用了乘数,来确定我的观点。 然而,在我的位置约束我已经使用了值,我改变了不同的大小类。 然而,对于iPad Pro,使用常规/常规大小的类别,它的位置值不够大,但对于其他iPad则没有问题。 我真的不需要用乘法器添加定位视图来为我所有的视图提供百分比空间吗?

布局约束在默认今日小组件冲突

我在我刚刚为我的应用程序创build的“今日”小工具中观察到了有关Autolayout的非常奇怪的行为。 试图find问题的根源,我最终创build了一个纯粹的新Xcode项目 (单视图应用程序),并添加了一个Today Extension作为新的目标 – 甚至没有触及它。 当我在我的设备(iPhone 6s)上启动Today Extension时,第一件事情就是在控制台中引发布局约束冲突: 2016-05-03 18:17:22.216 TodayExtension[10183:4611907] 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 added […]

Autolayout完成时是否会触发iOS方法?

我有一个iOS应用程序,我需要知道什么时候一个新的视图是完全可见的屏幕上; 也就是说,Autolayout完成计算后,视图已经完成绘制。 在视图完全可见之前,ViewDidAppear似乎已经开火了。 如果我closuresAutolayout,时间似乎与人类感知一致,但我需要在这个项目中使用Autolayout(所以这不是一个解决scheme…只是一个testing)。 Autolayout计算完成后有没有什么方法可以触发? 或者当视图是ACTUALLY可见时触发的另一种方法(因为ViewDidAppear不适用于此)? 谢谢!

iOS8自动布局以编程方式固定到相对布局边距

我有一个UI元素(实际上是UISwitch ,但实际上并不重要),在Interface Builder中将前导空格和尾随空格固定为超级视图。 约束在Xcode 6中看起来像这样: 领导空间的约束是有效的。 约束值是42.0分 。 这正是我想要的,因为对于不同的设备,我可以更改UIView上的layoutMargins属性和约束将正常工作,以增加视图之间的余量。 现在我想在代码中添加另一个视图,这个视图的前后两个空格都被固定为superview margin,所以相同的layoutMargins设置为superview。 我使用以下语法使用视觉格式语言固定视图: NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"|-42.0-[separatorView]-42.0-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(self.contentView, separatorView)]; [self.contentView addConstraints:constraints]; [self.contentView setNeedsUpdateConstraints]; 这个工作,但layoutMargins属性没有使用这个约束的影响,所以它显然不是固定到保证金,而是直接到超视图。 所以我的问题是: 如何使用可视化格式语言将UI元素空间固定在代码中的边距? 或者如果不可能的话,如何使用constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant: API? 谢谢!

iOS设置为0时,UICollectionView间距仍然存在 – 如何设置单元格之间没有间距

我有一个简单的UICollectionView,我已经在InterfaceBuilder中设置了0的间距,但是当我用单元填充集合视图时,仍然有一些间距。 有没有什么特别的,并不是很明显,我需要做的,以实际上看到一个0间距collectionview单元格超出设置它有0间距? 谢谢。 编辑*一些代码: – (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath { UICollectionViewCell *cell = [cv dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath]; cell.backgroundColor = [UIColor clearColor]; UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(2, 2, cell.frame.size.width -4, cell.frame.size.height -4)]; lbl.backgroundColor = [UIColor clearColor]; lbl.font = [UIFont boldSystemFontOfSize:20]; lbl.text = [NSString stringWithFormat:@"$%0.0f", [[amountsArray objectAtIndex:indexPath.row] floatValue]]; lbl.textAlignment = NSTextAlignmentCenter; lbl.layer.borderWidth = 1; [cell addSubview:lbl]; […]