我想使代码中的uiview约束无效,以根据视图中的特定更改强制所有字段重新布局.
例如,假设我有两个给定固定VerticalSpace约束的UILabel.在某些用户事件中,我正在调整顶部的标签.我希望能够强制约束从代码中失效.
这是我第一次使用约束,我不明白我如何从代码中做到这一点.我知道当设备旋转时,UIViews上的约束无效.
我有一个关于在以下场景中使用布局约束的问题.一切都在代码中(没有笔尖或故事板).我想创建一个包含任意数量的项目行的视图.每行包含任意数量的子视图.
要创建此视图,我想传入一个深度为两级的数组.第一级数组包含每一行.第二级数组包含每行中的元素.因此,例如,这可能如下所示:
NSArray *elements = @[@[subview1, subview2, subview3], @[subview4], @[subview5, subview6]]
在这个数组中,将有3行:
1)第1行:subview1,subview2,subview3
2)第2行:subview4
3)第3行:subview5,subview6
我希望将这些元素格式化为:
- 行应该都是其父视图的整个宽度(为此我们可以假设它是屏幕的大小)
- 一行中的每个元素应该是相同的宽度并且它们之间具有相同的空间量(比如说)如果有4个元素,则1和2以及2和3之间的空间可以是10pt)
- 每个行之间应该具有相同的垂直空间量(例如每行之间10pt的垂直空间)
在上面的场景中,第1行将有3个等宽度相等的子视图,第2行将有1个子视图占据行的整个宽度,第3行将有2个子视图具有相等的宽度并且间距相等分开.
所以,问题是,我该怎么做?!
我已经做了一段时间了,我的理解似乎没有变得更好.帮助将不胜感激!
在iPhone 4(或没有16:9 iPhone 5分辨率的任何iPhone/iPod设备)上,我的popover看起来很棒; 根本没有拉伸,完全按照我的意图.

然而,在iPhone 5上,弹出窗口被拉伸:

我只能假设它是因为自动布局的约束,但我无法弄清楚是什么导致它.
当我在界面生成器中选择包含窗口中所有控件(以及看似被拉伸的内容)的UIView时,这些是它对它的约束(再次,为图像的高度道歉,它有很多子视图):

我以为是Top Space to: Superview Equals: 103但我不能删除它.我将它提升为用户约束,然后删除它,它再次出现.
我在这做错了什么?
我只是想在我的imgView上设置宽度和高度约束.我有以下代码:
UIImageView *imgView = [[UIImageView alloc] init];
imgView.center = self.view.center;
imgView.image = [UIImage imageNamed:@"favorites5-highlighted.png"];
imgView.contentMode = UIViewContentModeCenter;
[self.view addSubview:imgView];
// width constraint
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[imgView(==100)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(imgView)]];
// height constraint
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[imgView(==100)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(imgView)]];
Run Code Online (Sandbox Code Playgroud)
我最终得到这个错误:无法同时满足约束.我抬起头来尝试添加:
imgView.translatesAutoresizingMaskIntoConstraints = NO;
Run Code Online (Sandbox Code Playgroud)
和
self.view.translatesAutoresizingMaskIntoConstraints = NO;
Run Code Online (Sandbox Code Playgroud)
编辑:
我只是想将imageView的宽度和高度设置为所需的属性.我第一次尝试使用
CGRect rect = CGRectMake(0, 0, 10, 10);
imgView.frame = rect;
Run Code Online (Sandbox Code Playgroud)
但没有改变
如何使用IB约束和NSLayoutConstraint?
我想以编程方式微调我的Interface Builder Storyboard布局,因为我无法单独使用Interface Builder中的约束来实现所需的布局.
iPhone 4S和iPhone 6 Plus对我的iOS 8布局特别具有挑战性.
问题:
当UIViewController出现时,如何找到屏幕尺寸?
如何在iOS 8中检测方向更改和生成的屏幕尺寸?
如何以编程方式修改布局约束?
如何以编程方式处理IB 大小类?
也许通过IB中的"加权"组件,我可以补偿iPhone 6 Plus尺寸等级的布局问题.但似乎比以编程方式进行一些调整更具挑战性.
iOS 8支持的Devicea是分散屏幕大小的泥潭
iOS 4应用程序仍然需要支持iPhone 4S,其屏幕非常小巧.对于更适合大型iPhone屏幕的应用程序来说,4S上的应用程序令人满意,这对于几乎荒谬的程度来说是一个非常紧迫的挑战.
iPhone 6 Plus实际上是iPad"mini-mini",除了更紧凑的宽高比.相对庞大的iPhone 6 plus需要比其他iPhone更均匀/更宽敞的组件分布.然而,Interface Builder大小类并不能很好地覆盖iPhone 6 Plus(到目前为止).
我可以通过VFL将视图固定到我的superView边缘而不是其布局边距吗?我可以灵活地在myView上切换"相对于保证金"吗?
没有VFL(这是我想用Visual Format Language实现的):
var constraintLeft = NSLayoutConstraint(item: myView, attribute: NSLayoutAttribute.Left, relatedBy: NSLayoutRelation.Equal, toItem: self.view!, attribute: NSLayoutAttribute.Left, multiplier: 1.0, constant: 0)
var constraintRight = NSLayoutConstraint(item: myView!, attribute: NSLayoutAttribute.Right, relatedBy: NSLayoutRelation.Equal, toItem: self.view!, attribute: NSLayoutAttribute.Right, multiplier: 1.0, constant: 0)
Run Code Online (Sandbox Code Playgroud)
VFL:
var constraintHorizontal = NSLayoutConstraint.constraintsWithVisualFormat("H:|-[myView]-|", options: NSLayoutFormatOptions(0),metrics: nil, views: viewsDictionary)
Run Code Online (Sandbox Code Playgroud) 我UIImageView在控制器的视图中有一个,它与视图顶部的距离为屏幕高度的20%。即我想设置屏幕高度的20%作为top Constraint的UIImageView。
我可以在不向容器视图中添加透明视图(将其高度设置为屏幕高度的20%)的情况下实现此方法吗?
我有一个UIImage.当这UIImage出现在iPhone上时,我希望它的高度为UIImage屏幕高度的0.5.当这UIImage出现在iPad上时,我希望它UIImage的高度为屏幕高度的0.3.
我已经使用Interface Builder尺寸类别设置不同的尝试Multiplier为Compact|Regular和Regular|Regular,但是当我改变Multiplier的值,它在所有大小级的变化.
有没有办法Multiplier为不同的大小类设置不同的值?
为了实现扩展自定义表视图单元,我使用了UITableViewCell的自定义xib文件.
但我在该xib文件中找不到约束面板.
为了适应可变设备大小,我必须设置尾随约束.是否无法在自定义xib文件中设置约束?
我试图在下面转换swift代码
NSLayoutConstraint.Attribute.height
Run Code Online (Sandbox Code Playgroud)
我正在使用SkeletonView,它在执行时抛出了我的错误.
我无法找到新的替换语法
类型'NSLayoutConstraint'没有成员'属性'
ios ×9
autolayout ×5
objective-c ×3
swift ×3
xcode ×2
cocoa-touch ×1
ios6 ×1
ios8 ×1
iphone ×1
size-classes ×1
xib ×1