Questions tagged «autolayout»

自动布局是针对OS X和iOS的基于约束的描述性用户界面布局系统。

11
宽度和高度是否等于以编程方式使用自动布局的superView?
我一直在网上寻找很多片段,但仍然找不到解决问题的答案。我的问题是我有一个scrollView(SV),我想以编程方式在scrollView(SV)内添加一个按钮,使其具有与superview相同的宽度和高度,即scrollView(SV),以便在用户旋转设备按钮时具有相同的框架scrollView(SV)。如何做NSLayout / NSLayoutConstraint?谢谢

8
在自动布局中将子视图的X居中会引发“未为约束做准备”
我有一个自定义的UIView子类,该子类正在通过笔尖初始化。 在中-awakeFromNib,我正在创建一个子视图,并尝试在其子视图中居中。 [self setInteralView: [[UIView alloc] init]]; [[self internalView] addConstraint: [NSLayoutConstraint constraintWithItem: [self internalView] attribute: NSLayoutAttributeCenterX relatedBy: NSLayoutRelationEqual toItem: self attribute: NSLayoutAttributeCenterX multiplier: 1 constant: 0]]; 这会中断,并导致以下输出: 2013-08-11 17:58:29.628 MyApp[32414:a0b] The view hierarchy is not prepared for the constraint: <NSLayoutConstraint:0xc1dcc80 UIView:0xc132a40.centerX == MyView:0xc1315a0.centerX> When added to a view, the constraint's …


13
相当于iOS的Android View.GONE可见性模式
我正在开发适用于iOS的应用,并且正在使用自动布局打开的情节提要。我的一个视图控制器具有一组4个按钮,在某些情况下,我想使第一个按钮消失。 如果我使用该setHidden:TRUE方法,UIButton将变得不可见,但显然仍会在视图中占用空间,结果是一个“洞”,我无法填充该洞,使其余的UIButton朝着主视图的顶部浮动。 在Android中,我会简单地使用View.GONE代替View.INVISIBLE,但是在iOS中,我会坚持这种行为,并且我不希望唯一的解决方案是手动(是的,是通过编程)将其余元素移到顶部。 我以为我可以设置某种约束来使一切像在Android中一样自动进行,但是我没有运气。 在我关闭自动版式设置之前,有人可以指出我正确的方向吗? 我正在使用IB,但是我也对程序化的东西很满意。 更新: 将组件高度设置为0也无济于事。 我尝试过这样的事情: UIButton *b; CGRect frameRect = b.frame; frameRect.size.height = 0; b.frame = frameRect;

8
以编程方式创建视图时应在哪里设置自动布局约束
我看到了设置约束的不同示例。有人在viewDidLoad/中loadView(在添加子视图之后)设置它们。其他人在方法中设置它们,该方法updateViewConstraints由调用viewDidAppear。 当我尝试在updateViewContraints其中设置约束时,布局可能会跳动,例如在视图出现之前稍有延迟。另外,如果我使用这种方法,是否应该首先清除现有约束,即[self.view [removeConstraints:self.view.constraints]?

4
UIScrollView不使用自动布局约束
我后面有一个滚动视图和一个图像视图,并用笔尖填充它。我正在使用自动版式。在这两个视图中,我都有一个底部空间可以进行超级视图和顶部空间来进行超级视图。图像视图确实可以实现我想要的功能。对于iPhone 5,这是我想要的地方。对于其他iPhone,它位于屏幕底部上方,因此可以正确调整大小。滚动视图在iphone 5上看起来正确,但在其他手机上并没有调整大小,因此它向下滚动到应用程序视图下方。我在日志中收到以下消息: 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 added the …

9
CALayer IOS上的自动布局约束
嗨,我正在开发iPhone应用程序,其中我试图为edittext设置一侧边框。我这样做的方式如下: int borderWidth = 1; CALayer *leftBorder = [CALayer layer]; leftBorder.borderColor = [UIColor whiteColor].CGColor; leftBorder.borderWidth = borderWidth; leftBorder.frame = CGRectMake(0, textField.frame.size.height - borderWidth, textField .frame.size.width, borderWidth); [textField.layer addSublayer:leftBorder]; 我在IB中的edittext上施加了一些约束,以便在旋转设备时,它会据此调整文本字段的宽度。我的问题是,调整edittext的宽度而不调整我为我的编辑文本设置的CALayer的宽度。因此,我认为我也必须对我的CALayer项目设置一些约束。但是我不知道该怎么做。有人知道吗?需要帮忙。谢谢。

5
在Xcode的调试控制台输出中禁用自动布局约束错误消息
有没有一种方法可以(暂时)禁用自动布局错误/警告消息: 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 the unwanted constraint or constraints and …
77 ios  xcode  autolayout 


8
Xcode 11添加新的约束设置为零:使用设置值代替默认值/标准
我曾经使用自动布局添加新的约束,以便对超级视图/相对视图进行简单的约束,如下所示(很长一段时间): 但是,最近在更新到最新的xcode(11.3.3或仅11.3 / 11C29)之后,我遇到了一个奇怪的问题:当我将常量设置为0时,它们总是以不想要的方式生成约束,如下所示: 而且似乎默认值是20,使我的视图看起来很错误(0比20?) 如果我通过编辑约束来解决问题,如下所示: 然后它将再次校正(图像在编辑了约束之后,在编辑之前显示constant = Standard) 我什至不知道如何描述这个问题,但是如何解决这个新问题add new constraint以使用我的愿望点而不是标准/默认值? 更新: 看来只有在约束监督时才发生。不知道如何解决。 2020年4月1日更新: Xcode11.4修复了此问题。

4
在Xcode 5中向Superview添加间距约束
我正在Xcode 5中构建一个iOS应用,并且在添加布局约束时遇到了麻烦。在Xcode 4.x中,我可以只在容器(超级视图)的任何UI元素中添加前导/尾随/顶部/底部空格。现在,我只有这个选项: 我想在文本视图中添加“底部空间以供超级视图”约束。它说“间隔到最近的邻居”,但是我不想创建“最近的邻居”的约束,我的文本视图下还有其他内容,也不想为此创建约束。如果我的文本视图下没有其他对象,则它将正确添加一个约束到容器。但是,如果我尝试更改任何内容,那么一切都会变得混乱:我需要将所有视图移到其他位置,然后添加约束,然后添加将其他视图移回。如果我在文本视图和UI元素(在这种情况下为按钮)之间添加约束,那么它将无法正常工作(一切似乎正确:按钮对superview的底部具有约束,文本视图的垂直间距与按钮,并且没有冲突的约束)。UI元素以不同(3.5英寸)屏幕方向出现在屏幕边界之外。Interface Builder是否存在错误,还是我缺少某些东西?当我可以正确设置所有内容时,当我调整界面生成器屏幕的大小时,我的控件似乎仍然超出范围,但是可以在模拟器/设备上以3.5英寸正确显示。在Xcode 5中使用新的Interface Builder约束设计UI的“最佳实践”是什么? 更新:我在另一个项目中遇到同样的问题。我试图通过将CTRL拖动到显示“顶部布局指南”的位置来完全将视图的顶部固定到顶部布局指南,并且试图将控件的底部保留到布局指南中(大约-470点),而不是让控件的顶部冗长,这没有任何意义,因为控件应该将自己布置在可变高度的屏幕上(例如,常规和4英寸iPhone,以及将来可能的其他布局。)。这是正在发生的情况的屏幕截图: 我在约束中遇到了这个问题: 如何使Interface Builder对齐视图顶部和顶部布局指南? 更新2:我找到了一种解决方法。我首先调整视图的大小以减小其高度(这样它的顶部不会重叠或非常靠近顶部布局指南),然后按CTRL +将其拖动到顶部布局指南。它似乎正常工作。连接后,我再次将视图调整为所需的大小并选择Update Constraints。它可以工作,但是仍然不是解决方案,因为它需要调整视图的大小,连接,再次调整大小和更新约束。

14
自动布局:是什么创建名为UIView-Encapsulated-Layout-Width&Height的约束?
我的布局约束在Interface Builder中很好,但是由于框架的某些部分应用了我确实不希望的固定高度和宽度约束,因此在运行时发生了异常。他们为什么在那里,以及如何将它们关闭? 它们是已记录列表中显示的最后两个约束: 2014-04-26 09:02:58.687 BBCNews[32058:60b] 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 the …

5
使用scrollview中的动态大小控制器调整容器视图的大小
我正在尝试在UIScrollView内创建一个具有动态高度的控制器的容器视图,并使用自动布局自动调整其大小。 视图控制器A是滚动视图,其中包括容器视图,以及下面的更多内容。 View Controller B是我希望具有动态大小的视图控制器,并且所有内容都将在View Controller A的“滚动视图”中以全高度显示。 我在获取B的动态大小以自动设置A中的Container View的大小时遇到​​了一些问题。但是,如果我在A中的Container View上设置了高度限制, 如果View Controller B的高度也为250,则将是预期的输出。对于高度1000,它也可以正常工作,据我所知,所有自动布局约束均已正确设置。不幸的是,由于高度实际上应该是动态的,因此我想完全避免设置高度限制。 我不确定是否有视图控制器BI可以设置任何设置来根据其内容自动更新其大小,或者我是否错过了其他技巧。任何帮助将非常感激! 是否可以在不设置高度约束的情况下根据View Controller B的大小来调整A中的Container View的大小?

18
如何在iOS 7中以编程方式设置设备方向?
我正在使用自动布局在iPad应用程序上工作,如果用户启用了某种模式(“平视”模式),则我仅希望支持纵向(或纵向颠倒)方向,并且如果设备处于风景,我想自动切换到人像模式。 在顶视图控制器中,我具有以下内容: - (NSUInteger) supportedInterfaceOrientations { if (self.modeHeadsUp) { return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown; } else { return UIInterfaceOrientationMaskAll; } } - (BOOL) shouldAutorotate { return TRUE; } 根据我在其他地方看到的答案,答案似乎是我应该使用“ application setStatusBarOrientation”。因此,在用户选择“抬头”模式的方法中,我包括: UIApplication *application = [UIApplication sharedApplication]; [application setStatusBarOrientation:UIInterfaceOrientationPortrait animated:YES]; 但是,这似乎没有任何作用。虽然我可以物理移动设备以使其旋转成纵向,但它不会自动旋转。 实际上,当在运行上述代码以尝试以编程方式设置方向之后以横向模式运行时,当我使用以下代码查询应用程序“ statusBarOrientation”时,对于横向而言,它保持在“ 4”: UIApplication *application = [UIApplication sharedApplication]; int orientation = …

11
子视图控制器中的topLayoutGuide
我有一个UIPageViewController带有半透明状态栏和导航栏。topLayoutGuide如预期的那样,它是64像素。 但是,即使子视图控制器显示在状态栏和导航栏下,它们的子视图控制器也会UIPageViewController报告topLayoutGuide0像素。 这是预期的行为吗?如果是这样,将子视图控制器的视图放置在real下的最佳方法是topLayoutGuide什么? (没有使用parentViewController.topLayoutGuide,我认为这是一个hack)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.