Tag: 自动布局

AutoLayout + RTL + UILabel文本alignment

我终于轮到与自动布局摔跤,似乎无法弄清楚如何从右到左(RTL)的支持工作,我希望/希望的方式… 我在界面生成器中devise了如下所示的视图: 如果使用英语,结果应用程序按预期运行: 但是,当切换到RTL语言(在这种情况下,阿拉伯语),整个视图翻转(这是伟大的),但UILabel的文本仍左alignment。 我希望它是正确的alignment,以保持它对UIImageView 。 很明显,我错过了一些东西,或者这不在自动布局中。 我是否应该使用RTL语言手动设置textAlignment ?

AutoLayout与隐藏的UIViews?

我觉得这是一个相当普遍的范例,根据业务逻辑显示/隐藏UIViews ,通常是UILabels 。 我的问题是,什么是最好的方式使用AutoLayout来响应隐藏的意见,如果他们的帧是0x0。 以下是1-3个function的dynamic列表示例。 现在我从button到最后一个标签有一个10px的顶部空间,当隐藏标签时,它显然不会向上滑动。 到现在为止,我创build了这个约束的出口,并根据我显示的标签数量来修改常量。 这显然有点不好意思,因为我使用负常数值将button向上推到隐藏的帧上。 这也是不好的,因为它不受限于实际的布局元素,只是基于已知的高度/其他元素的填充的偷偷静态计算,显然与AutoLayout的构build。 我显然可以根据我的dynamic标签创build新的约束条件,但是这样做有很多的微观pipe理,并且为了试图压缩一些空白而需要大量的冗长。 有更好的方法吗? 改变帧大小0,0,让AutoLayout做它的事情,没有约束的操纵? 完全删除视图? 老实说,只是从隐藏视图的上下文修改常量需要一行代码和简单的计算。 使用constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:重新创build新约束constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:似乎很重。

在Xcode 6中使用AutoLayout约束来模拟方面适合的行为

我想使用AutoLayout来调整和布局视图的方式,让人想起UIImageView的方面适合的内容模式。 我在Interface Builder的容器视图中有一个子视图。 子视图有一些我想要尊重的固有长宽比。 容器视图的大小在运行时才是未知的。 如果容器视图的纵横比比子视图宽,那么我希望子视图的高度等于父视图的高度。 如果容器视图的高宽比高于子视图,那么我希望子视图的宽度等于父视图的宽度。 无论哪种情况,我都希望子视图在容器视图中水平和垂直居中。 有没有办法在Xcode 6或以前的版本中使用AutoLayout约束? 理想情况下使用Interface Builder,但是如果没有,也许可以通过编程来定义这样的约束。

iOS AutoLayout – 获取框架大小的宽度

我正在开发使用iOS 6自动布局 我想logging显示视图的帧宽度的消息。 我可以在屏幕上看到textView。 但我得到的宽度和高度为零,我错过了什么? NSLog(@"textView = %p", self.textView); NSLog(@"height = %f", self.textView.frame.size.height); NSLog(@"width = %f", self.textView.frame.size.width); textView = 0x882de00 height = 0.000000 width = 0.000000

NSLayoutConstraints是可以animation的吗?

我正在尝试对一些视图进行animation处理,以使它们被景观中的巨型键盘所阻挡。 如果我简单地为框架设置animation效果,效果会很好,但是其他人则认为这样做会适得其反,而我应该更新NSLayoutConstraints。 但是,他们似乎不是可以animation的。 有没有人得到他们的成功? //heightFromTop is an NSLayoutConstraint referenced from IB [UIView animateWithDuration:0.25 animations:^{ self.heightFromTop.constant= 550.f; }]; 结果是立即跳到有问题的高度。

NSInvalidUnarchiveOperationException:无法实例化名为NSLayoutConstraint的类

我对此很新。 我一直按照苹果的教程一步一步的iPhone项目“HelloWorld”。 我在iPhone 5.0模拟器中运行它,它崩溃了: 2012-11-02 14:46:06.782 HelloWorld[9880:c07] *** Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named NSLayoutConstraint' *** First throw call stack: (0x14a2052 0xea2d0a 0x144aa78 0x144a9e9 0x32f7d7 0x32f9af 0x32f6b7 0x23036d 0xd7e2c 0xd83a9 0xd85cb 0x38a73 0x38ce2 0x38ea8 0x3fd9a 0x10be6 0x118a6 0x20743 0x211f8 0x14aa9 0x138cfa9 0x14761c5 0x13db022 0x13d990a 0x13d8db4 0x13d8ccb 0x112a7 0x12a9b […]

我可以在同一视图上使用setFrame和自动布局吗?

我想添加填充到我的所有button,所以我subclassed UIButton和其他更改,我想通过使用setFrame方法添加一个固定的填充。 除了setFrame之外,一切正常。 我检查了一下,发现如果我在该视图中取消select“使用AutoLayout”,那么我可以使用setFrame,它可以工作。 有没有解决的办法? 我真的想使用自动布局,因为它有助于在iPhone 5和更早的设备上使应用程序看起来不错。 但我也想在我的子类中使用setFrame,使我的生活更轻松。 总结一下,我的问题是:我可以使用autolayout,并以编程方式调整UIView的框架?

我可以在运行时禁用特定子视图的自动布局吗?

我有一个观点,需要有其框架编程操作 – 这是一种文件视图,其中包含的内容,然后通过操纵框架的原点滚动和放大超视图。 Autolayout在运行时与此战斗。 完全禁用自动布局似乎有点苛刻,因为它可以合理地用于处理其他视图的布局。 看来我可能想要的是某种“空限制”。

以编程方式创build布局约束

我知道很多人已经提出了很多关于这个问题的问题,但是即使有了答案,我也无法做到这一点。 当我处理故事板上的限制时,这很容易,但在代码中我很难。 例如,我尝试按照屏幕方向在右侧看到屏幕的高度。 这是我的代码: UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 748)]; myView.backgroundColor = [UIColor redColor]; [self.view addSubview:myView]; [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[myView(>=748)]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(myView)]]; 它不能满足一些限制。 我不明白什么是错的。 另外,为什么我不能像self.myView而不是像self.myView这样的局部variables?

iOS:自动布局中的多行UILabel

我无法通过自动布局来实现一些非常基本的布局行为。 我的视图控制器在IB中看起来像这样: 最上面的标签是标题标签,我不知道会有多less行。 我需要标题标签来显示文本的所有行。 我还需要另外两个标签和小图片放在标题下方,不pipe高度如何。 我已经设置标签和小图像之间的垂直间距约束,以及标题标签和其超视图之间的顶部间距约束以及小图像和其超视图之间的底部间距约束。 白色的UIView没有高度约束,所以它应该垂直拉伸以包含它的子视图。 我已经将标题标签的行数设置为0。 我怎样才能得到标题标签resize,以适应string所需的行数? 我的理解是,我不能使用setFrame方法,因为我使用自动布局。 而我必须使用自动布局,因为我需要这些其他视图留在标题标签(因此约束)之下。 我怎样才能做到这一点?