2015-11-03 23 views
1

我想作一个简单的UIScrollView。 为此,我在其中放置了一个UIView,并将其中的所有组件放在此UIView之内。为什么我的UIScrollView里面的UIView不尊重它的高度限制?

enter image description here

我的问题是,我以编程方式设置的contentSize我UIScrollView(和它完美的作品),但我UIView不尊重这个新的高度......所以,我在底部部件不在我的UIView但在我的UIScrollView

enter image description here

这是一个问题,因为我UISegmentedControl( “Consommation /发射”)没有回应,违背了测试UISegmentedControl( “第一/二”),它的工作原理。

我把UIScrollViewUIView,但它不工作之间平等的高度约束...

回答

0

的高度相等约束将使帧的大小相同,但不会导致视图的高度与内容大小相等。我会创造一个实际的高度约束的观点,然后做出约束IBOutlet中和更新,当您设置了滚动的contentSize.height像

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

无论你要更新你滚动视图的内容大小是不变的。我会说,使用自动布局时,通常比设置帧更好地设置或更新约束。设置框架往往会与布局引擎发生冲突。

enter image description here

找到您通过检查“相等的高度”框中设置的约束。检查“高度”框中创建一个IBOutlet。

+0

工作完美,我不知道我们可以制造IBOutlet的限制!谢谢。 – Will

+0

编辑:不幸的是我有约束的问题,我真的不明白:' “ ”' – Will

+0

当您添加显式高度视图的约束你是否移除了与scrollview相等的高度? “”我认为这一行是问题。这里你说的是你希望视图等于scrollview的高度再加上808.你应该移除这个约束,并且为视图的高度设置一个绝对的(即不与scrollview关联)约束。 – beyowulf

0

有一种方法来解决这个问题。 收听UIScrollViewcontentSize的更改。 当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 
} 
相关问题