参见英文答案 >
UIScrollView doesn’t use autolayout constraints4个
我正在使用autolayout来改变我的scrollview的高度.我在scrollview中添加了一些子视图,我手动增加了内容大小.但当我得到一个我即将改变高度的事件时,内容大小为零.
我正在使用autolayout来改变我的scrollview的高度.我在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]; }];
}