Tag: 自动布局

如何alignment与UIView中心等距的两个button

我正在使用自动布局。 面对有趣的问题。 幸运的是,它从这个时候就被克服,但是需要知道解决问题的最好方法。 问题:如上图所示,我有几个button。 两者都需要放置在距UIView中心等距离的地方(粗体垂直线是视图的中心)。 此外,我必须应用约束,以便button之间的距离将自动调整。 例如距离应该是设备宽度的25%。 如果我的设备宽度为320,则button之间的距离为80像素,依此类推。 解决scheme(我已经尝试):对于上述问题,我尝试了解决scheme。 如图所示,我在UIView的虚拟视图中添加了虚拟视图的宽度等于两个button之间的间距。 然后我将这些约束应用于虚拟视图。 例如: 1. Horizontal centre of the UIView 2.Width equals to the UIView width with 0.25 as a multiplier 问题:上面的解决scheme对我来说是完美的。 但如果将来如果我的观点会有太多复杂的元素,那么添加虚拟视图可能不是一个好主意。 那么,有没有其他干净的方式来做到这一点?

使用自动布局调整Uiview

现在我正在学习自动布局,我面临着一个我无法解决的问题。 我有一个视图,正确加载在一个4英寸的设备(左视图),我试图适应一个3.5英寸的设备,使完全像图像上的正确的看法: 唯一的区别是,绿色,橙色,黑色和粉红色的意见应该缩小一点,以保持上述两个视图相同的大小。 我的问题是,我不能找出一种方法来使用约束。 这是我已经有的约束所发生的事情: 我已经试图将底部空间固定在黑色和粉红色视图的超级视图上,以避免视图缩小以适应屏幕,但是这不起作用,并且在Xcode上给了我很多警告。

使用AutoLayout在UIScrollView中调整UIView进行滚动?

我有一个布局如下(使用AutoLayout,iPad): UIScrollView具有Top,Bottom,Leading,Trailing空间到超级视图为0. UIView也具有全部四个类似的约束。 第二个UILabel的高度设置为0(因为这里显示的是多个文本)。 另外,这四个引脚约束也已经从UIView设置到了UIScrollView 。 加载XIB时,此UILabel正确显示长行的文本。 但滚动不起作用。 这是iPad上正在运行的应用程序的屏幕截图: 黄色的背景设置为最外层的视图,灰色的设置为UIView 。 如果您在屏幕截图的末尾仔细看, UILabel的文本似乎溢出了UIView 。 我怀疑是因为UIView不能“捕捉”它的子视图的大小,所以UIScrollView也不能计算它的内容大小(如果内容视图只等于一个屏幕,那么没有理由让滚动条工作)。 为什么即使UILabel显然是UIView的子视图,也会发生这种情况? 如果我的怀疑是正确的, 我怎么设置UIView的高度等于实际的内容大小,以便我的UILabel被正确“包含”在其中? (静态设置UIView的高度,宽度不是一个选项)。 注意:testing没有UIView的XIB,在UIScrollView里只有一个UILabel (带有长文本)。 现在滚动工作(因为,我认为,滚动视图可以计算其内容的大小)。 NB2:我也试过这个问题和这个post的答案,但我的UIView不会超出屏幕的尺寸。 (我只关心横向滚动)

我怎样才能触发更新所有的自动布局约束?

我以编程方式修改了一个自动布局约束。 这种观点在某种意义上是有效的,但是其他观点却受到其他观点的约束,并不改变它们的立场。 它是否存在一个“ updateAllConstrains ”方法?

增加布局约束的优先级

我有一个superView这样的label和button 。 |————–[Label]—–[button]-| 如果可能的话,我希望label centred ,然后在button上留出最小间隔,然后向左移动。 所以如果button很大,它看起来像… |-[ LABEL! ]-[button]-| 所以,button保持在原来的位置和相同的大小。 元素之间有最小的差距。 我可以添加centerX约束,但我似乎无法给它一个优先级,所以它仍然是Required 。 我怎样才能创造这种情况? 我正在做代码中的所有自动布局。 我目前的限制是… [self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|-[_label]-(>=8@1000)-[_button(==45)]-|" options:NSLayoutFormatAlignAllCenterY metrics:nil views:views]]; [self addConstraint:[NSLayoutConstraint constraintWithItem:_label attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0.0]]; 但是我不确定如何减less第二个约束的优先级。

在Xcode 4.5中,在哪里设置转换自动化仓库框架的限制

我需要将translatesAutoresizingMaskIntoConstraints设置为NO 。 默认情况下,它被设置为YES (帮助大多数从struts和spring转换到新Auto Layout的应用程序)。 Xcode中有什么地方默认可以从YES更改为NO ? 或者我必须为每个视图手动设置它?

子视图中的UIButton在NSLayoutConstraint后没有收到触摸

我有2个自定义UIViews,我添加到我的UIViewController,然后使用NSLayoutConstraintalignment它们。 在UIViewController视图上应用NSLayoutConstraint后,自定义UIViews中的UIButtons不再接收触摸事件。 – (void)viewDidLoad { [super viewDidLoad]; navigationBar = [[DtNavigationBar alloc] initWithFrame:CGRectMake(0,0,320,45)]; [navigationBar setTranslatesAutoresizingMaskIntoConstraints:NO]; [self.view addSubview:navigationBar]; switchBar = [[DtSwitch alloc] initWithFrame:CGRectMake(0,0,320,44)]; [switchBar setTranslatesAutoresizingMaskIntoConstraints:NO]; [self.view addSubview:switchBar]; [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[navigationBar(45)]-0-[switchBar(44)]-(>=100)-|" options:NSLayoutFormatAlignAllLeft metrics:nil views:NSDictionaryOfVariableBindings(switchBar, navigationBar)]]; } DtNavigationBar和DtSwitch都有UIButton视图,它们仍然显示在正确的位置,但不再响应触摸。 如果我删除addConstraints部分(并手动放置视图),那么button工作正常。

与ContentInset的UICollectionView不滚动一路下去

我正在设置UICollectionView的内容: [_collectionView setContentInset:UIEdgeInsetsMake(0.f, 0.f, 100.f, 0.f)]; 然后我用这个方法以编程方式一直滚动到UICollectionView的底部: – (void)scrollToLastMessageAnimated:(BOOL)animated; { if (_messages.count == 0) { return; } NSUInteger indexOfLastSection = _messagesBySections.count – 1; NSInteger indexOfMessageInLastSection = [_messagesBySections[indexOfLastSection] count] – 1; NSIndexPath *path = [NSIndexPath indexPathForItem:indexOfMessageInLastSection inSection:indexOfLastSection]; [_collectionView scrollToItemAtIndexPath:path atScrollPosition:UICollectionViewScrollPositionCenteredVertically animated:animated]; } 它向下滚动,但忽略了contentInset,这意味着最后的单元格在指定的内容插入点之下: 左边的图像显示了在视图出现之后它现在是如何显示的。 在正确的图像中,我手动滚动到最后一条消息。 我正在使用AutoLayout,为什么会发生这种情况? 编辑: 以下是IB设置的屏幕截图:

当方向改变时重新定位控制

我知道Auto Layout可以用来在方向改变时使尺寸和位置保持一致。 当方向改变时,是否可以完全改变布局? 例如,请在纵向模式下查看简单login屏幕的下面的线框。 现在,如果我旋转设备,我想完全重新定位控件。 这种事情可以通过使用自动布局来完成吗? 如果不是,我该怎么办呢? 谢谢。

Autolayout根据文本调整button大小,并有文本框填充可用空间

我正在使用自动布局的ios应用程序, 我有一个UITextField和UIButton水平旁边。 UIButton文本dynamic更改。 它可以很短(3个字母)或很长(15个字母) 我需要添加约束来实现以下内容: 1)当我改变UIbutton文本,我需要button来resize,以适应新的文字 2)UITextField应resize以在button文本更改后留下可用空间 我试图做到以下几点(如图所示): 为超级视图20添加了对UITextView的主要约束 添加了UIButton的追踪约束到超级视图20 他们之间增加了一个固定的距离10 但现在我坚持如何使UIButton与文本和文本字段resize。 任何帮助表示赞赏 谢谢