Я использую autolayout
, чтобы изменить высоту моего scrollview
. Я добавляю subviews
в scrollview
, где я вручную увеличиваю размер содержимого. Но когда я получаю событие, когда я собираюсь изменить высоту, размер содержимого равен нулю.Содержимое UIScrollView сбрасывается до нуля при использовании автоматического макета
Вот код:
-(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:. Тег «Нажатие» изменяет высоту, чтобы отобразить все кнопки. Затем, когда пользователь выбирает кнопку, высота прокрутки изменяется на оригинал, а смещение устанавливается на начало кнопки. Приведенный ниже код работает, но анимация ошибочна. Если я изменил смещение и перед блоком анимации, он просто устанавливает смещение в ноль.
- (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];
}];
}
Я обновлю сообщение с оригинальной проблемой. –
Я не понимаю, зачем вам вообще нужен прокрутка. У вас есть представление, что либо показывает одну кнопку, либо показывает все кнопки; где прокрутка? Просто используйте представление, изменяющее размер. Еще лучше, просто покажите и спрячьте, и кнопки по мере необходимости, возможно. – matt
Обратите внимание, что вид прокрутки позволяет прокручивать * пользователь *. * Вы можете прокручивать (т. Е. Показывать одну конкретную кнопку) без прокрутки, поэтому, если это все, что вы пытаетесь сделать, я бы предложил избегать просмотра прокрутки, что добавляет много осложнений, которые вам не нужны (насколько это возможно как я могу сказать). – matt