我正在以编程方式使用自动布局约束来布局我的自定义UITableView单元格,并且我正确地定义了单元格大小 tableView:heightForRowAtIndexPath:
它在iOS6上运行得很好,在iOS7中看起来也很好
但是当我在iOS7上运行应用程序时,这是我在控制台中看到的那种消息:
Break on objc_exception_throw to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
2013-10-02 09:56:44.847 Vente-Exclusive[76306:a0b] 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 …Run Code Online (Sandbox Code Playgroud) 我不是在谈论框架属性,因为从中你只能获得xib中视图的大小.我正在讨论视图由于其约束(可能在旋转之后,或响应事件)而调整大小的时间.有没有办法获得当前的宽度和高度?
我试图通过其约束来寻找宽度和高度约束,但是当存在内在约束时,这不是很干净并且失败(因为我无法区分这两者).此外,仅当它们实际具有宽度和高度约束时才有效,如果它们依赖其他约束来调整大小,则它们不会.
为什么这对我来说如此困难.ARG!
我有一个视图,需要以编程方式操作它的框架 - 它是一种包含其内容的文档视图,然后通过操作框架原点滚动并围绕超视图进行缩放.Autolayout在运行时与此斗争.
完全禁用自动布局似乎有点苛刻,因为它可以合理地用于处理其他视图的布局.看起来我可能想要的是某种"空约束".
在iOS 8中,您可以通过简单地设置估计的行高来获得100%动态表格视图单元格,然后使用"自动布局"在单元格中布局元素.如果内容物的高度增加,则细胞的高度也会增加.这非常有用,我想知道是否可以在表格视图中为节标题完成相同的专长?
例如,可以创建一个UIViewin tableView:viewForHeaderInSection:,添加一个UILabel子视图,为视图指定标签的自动布局约束,并使视图的高度增加以适应标签的内容,而不必实现tableView:heightForHeaderInSection:?
viewForHeaderInSection状态文档:"只有在实现tableView:heightForHeaderInSection:时,此方法才能正常工作." 我还没有听说过iOS 8有什么变化.
如果一个人不能这样做,模仿这种行为的最佳方法是什么?
在我升级到Xcode 8之后,这是我的一个屏幕之前和之后.
我所做的只是打开我的main.storyboard,然后我在手机上构建并运行了我的应用程序.
在我的版本控制中,我可以看到Xcode正在对我的main.storyboard进行大量更改,就在我打开它之前.
每当我删除这些更改时,我都能看到我在Xcode 7.3.1中看到的内容.
但是,只要我用我的故事板重新打开界面构建器,我就会看到这些更改重新出现.
我能在这做些什么吗?
我在IB中设置了多组约束,我想根据某些状态以编程方式在它们之间切换.有一个constraintsA出口集合,所有出口集合都标记为从IB安装,constraintsB出口集合全部在IB中卸载.
我可以编程方式在两个集之间切换,如下所示:
NSLayoutConstraint.deactivateConstraints(constraintsA)
NSLayoutConstraint.activateConstraints(constraintsB)
Run Code Online (Sandbox Code Playgroud)
但是......我无法弄清楚何时这样做.看起来我应该能够做到这一点viewDidLoad,但我不能让它工作.我已经尝试过调用view.updateConstraints()并view.layoutSubviews()在设置约束后,但无济于事.
我确实发现,如果我设置约束,viewDidLayoutSubviews一切都按预期工作.我想我想知道两件事......
因为我发现AutoLayout我到处都使用它,现在我正在尝试使用它tableHeaderView.
我做了subclass一些UIView添加的东西(标签等......)我想要他们的约束,然后我把它添加CustomView到UITableView' tableHeaderView.
一切都工作得很好,除了UITableView总是显示上面的CustomView,通过以上我指的CustomView是下的UITableView,因此它不能被看到!
看来,无论我做什么,对height的UITableView" tableHeaderView是始终 0(所以是宽度,x和y).
我的问题:如果不手动设置框架,是否可以完成此操作?
编辑:我正在使用
的CustomView' subview有这些限制:
_title = [[UILabel alloc]init];
_title.text = @"Title";
[self addSubview:_title];
[_title keep:[KeepTopInset rules:@[[KeepEqual must:5]]]]; // title has to stay at least 5 away from the supperview Top
[_title keep:[KeepRightInset …Run Code Online (Sandbox Code Playgroud) 很多像这样的问题解释了如何以编程方式创建一个蒙版并为UIView提供圆角.
有没有办法在Storyboard中完成所有操作?只是因为看起来像在Storyboard中创建圆角似乎在表示和逻辑之间保持更清晰的界限.
似乎在Xcode 8上viewDidLoad,所有viewcontroller子视图都具有相同的1000x1000大小.奇怪的是,但没关系,viewDidLoad从来没有一个正确调整视图大小的好地方.
但是viewDidLayoutSubviews!
在我当前的项目中,我尝试打印按钮的大小:
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
NSLog(@"%@", self.myButton);
}
Run Code Online (Sandbox Code Playgroud)
日志显示myButton的大小为(1000x1000)!然后,如果我登录按钮单击,例如,日志显示正常大小.
我正在使用autolayout.
这是一个错误吗?
这是关于当前iOS开发的一个相当基本的问题,我从来没有找到一个好的答案.
在(比方说)垂直UICollectionView,
是否可以使用全宽度单元格,但是,允许通过自动布局控制动态高度?
(如果你是iOS"动态高度"的新手,意味着单元格有一些,比方说,文本视图可以是任何长度或图像可以是不同的大小,所以最终每个单元格是一个完全不同的高度.)
如果是这样的话?
这对我来说可能是"iOS中最重要的问题而没有真正好的答案".
autolayout ×10
ios ×9
uitableview ×3
xcode ×3
ios10 ×2
swift ×2
xcode8 ×2
ios7 ×1
ios8 ×1
ipad ×1
iphone ×1
storyboard ×1
uiview ×1
xcode4 ×1
xcode4.3 ×1