1

我想做一个简单的UIScrollView. 为此,我在其中放入了一个UIView,并将我所有的组件都放入了 thisUIView中。

在此处输入图像描述

我的问题是我以编程方式设置了我的 contentSize UIScrollView(并且它工作得很好),但我UIView不尊重这个新高度......所以我底部的组件不在我的UIView,而是在我的UIScrollView

在此处输入图像描述

这是一个问题,因为我的UISegmentedControl(“Consommation/Emission”)没有响应,这与有效的测试UISegmentedControl(“First/Second”)相反。

UIScrollView我在 the和 the之间设置了相等的高度约束,UIView但它不起作用......

4

2 回答 2

0

有办法解决这个问题。听听的contentSize变化UIScrollView。当 contentsize 发生变化时,您会抓住它并更改子视图的框架(高度,宽度..)

像这样:

[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
}
于 2015-11-03T16:41:52.860 回答
0

等高约束将使框架大小相同,但不会导致视图的高度等于内容大小。我会为视图创建一个实际的高度约束,然后使该约束的 IBOutlet 并在您设置滚动视图的 contentSize.height 时更新它的常量,例如

self.viewHeightConstraint.constant = self.scrollView.contentSize.height;

无论您在哪里更新滚动视图的内容大小。我想说,在使用自动布局时,设置或更新约束通常比设置框架更好。设置框架往往会与布局引擎发生冲突。

在此处输入图像描述

通过选中“等高”框找到​​您设置的约束。选中“高度”框,为其创建一个 IBOutlet。

于 2015-11-03T16:48:14.723 回答