我正在使用autolayout
来更改scrollview
的高度。我向subviews
添加了一些scrollview
,我手动增加了内容大小。但当我得到一个我要改变高度的事件时,内容大小为零。
以下是代码:
-(void) addTag:(NSString *)tagName {
...
[button addTarget:self action:@selector(tagPressed:) forControlEvents:UIControlEventTouchUpInside];
[self setContentSize:CGSizeMake(self.frame.size.width, self.contentSize.height+60)];
[self.items addObject: button];
NSLog(@"content height: %0.2f", self.contentSize.height);
}
控制台输出:
2013-04-18 18:23:06.106 TouchSelectApp[19944:c07] content height: 120.00
在这里输出contentSize:
- (void)tagPressed:(UIButton *)sender {
NSLog(@"1 content height: %0.2f", self.contentSize.height);
...
}
控制台显示:
2013-04-18 18:17:24.747 TouchSelectApp[19944:c07] 1 content height: 0.00
我不知道为什么内容高度设置为零。帮助我!
更新:这是我要解决的问题。
我有一个带按钮的滚动视图。最初它只显示一个按钮。按下按钮时,将调用tagPressed:。 Tag Pressed更改高度以显示所有按钮。然后,当用户选择按钮时,滚动视图的高度将更改为原始高度,并且偏移量将设置为按钮的原点。以下代码有效,但动画完全错误。如果我更改偏移量并在动画块之前,则只将偏移量设置为零。
- (void)tagPressed:(UIButton *)sender {
CGPoint p;
float maxHeight = self.items.count * 60;
if (self.height.constant == maxHeight) {
self.height.constant = 60;
p = CGPointMake(0, sender.frame.origin.y-5);
}else {
self.height.constant = maxHeight;
p = CGPointMake(0, 0);
}
[self.superview setNeedsUpdateConstraints];
[UIView animateWithDuration:0.5f animations: ^{
[self.superview layoutIfNeeded];
} completion:^(BOOL finished) {
[self setContentOffset:p];
}];
}