gpt4 book ai didi

ios - UIScrollView contentsize 在使用自动布局时重置为零

转载 作者:可可西里 更新时间:2023-11-01 03:08:36 32 4
gpt4 key购买 nike

<分区>

我正在使用 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

我不明白为什么内容高度设置为零。帮帮我!

更新:这是我要解决的问题。

我有一个带按钮的 ScrollView 。最初它只显示一个按钮。当按钮被按下时,tagPressed: 被调用。 Tag Pressed 更改高度以显示所有按钮。然后,当用户选择一个按钮时, ScrollView 的高度将更改为原始高度,并将偏移量设置为按钮的原点。下面的代码有效,但动画都是错误的。如果我在动画 block 之前更改偏移量,那么它只会将偏移量设置为零。

- (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];

}];

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com