我想做一个简单的UIScrollView
。
为此,我在其中添加了UIView
,并将所有组件放入此UIView
。
我的问题是我以编程方式设置了我的UIScrollView
的contentSize(并且它完美地工作),但是我的UIView
不尊重这个新高度...所以我的组件在底部是不在UIView
但在UIScrollView
!
这是一个问题,因为我的UISegmentedControl
(“Consommation / Emission”)没有响应,这与有效的测试UISegmentedControl
(“First / Second”)相反。
我在UIScrollView
和UIView
之间设置了相同的高度约束,但它不起作用...
答案 0 :(得分:0)
有办法解决这个问题。
聆听contentSize
UIScrollView
的更改。
当contentize改变时,你抓住它并改变你的子视图的框架(高度,宽度......)
像这样:
[scrollView addObserver:self
forKeyPath:@"contentSize"
options:NSKeyValueObservingOptionNew
context:NULL];
你在这里抓住它:
- (void) observeValueForKeyPath:(NSString*)keyPath
ofObject:(id)object
change:(NSDictionary*)change
context:(void *)context {
//change subview frame accordingly
}
答案 1 :(得分:0)
相等高度约束将使框架具有相同的大小,但不会导致视图的高度等于内容大小。我会为视图创建一个实际的高度约束,然后制作该约束的IBOutlet,并在设置scrollview的contentSize.height时将其更新为常量
self.viewHeightConstraint.constant = self.scrollView.contentSize.height;
无论您在何处更新scrollview的内容大小。我想说,在使用自动布局时,设置或更新约束通常比设置帧更好。设置框架倾向于与布局引擎对抗。
通过选中" Equal Heights"找到您设置的约束。框。检查"高度"框创建一个IBOutlet。