Я добавляю UIScrollView
в UIViewController
s view
. По какой-то причине между добавлением вида прокрутки в представление и его отображением, contentOffset
установлен в {0, -64}
, 64 - это строка состояния 20 плюс 44 балла навигационной панели (я думаю). Ниже приведен код, который воспроизводит проблему и изображение.UIScrollView автоматически прокручивается на 64 очка
Как предотвратить установку iOS contentOffset
?
- (void)viewDidLoad
{
[super viewDidLoad];
_scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(10, 100, 100, 100)];
_scroll.backgroundColor = [UIColor greenColor];
_scroll.delegate = self;
UIView *red = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, 10)];
red.backgroundColor = [UIColor redColor];
[_scroll addSubview:red];
[self.view addSubview:_scroll];
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
// outputs {0, -64}
NSLog(@"%@", NSStringFromCGPoint(_scroll.contentOffset));
}
Автоматическая компоновка на? Постскриптум Если вы хотите быстрое и грязное довольно универсальное решение, вы можете сбросить смещение содержимого на CGPointZero в - (void) viewDidLayoutSubviews. –
нет, не думаю. Я не использую раскадровки и не включаю его в какие-либо представления в коде. – fabian789
Вам не нужно использовать раскадровку, чтобы включить автоматическую компоновку; Фактически, я думаю, что это разрешено в xibs, по умолчанию. Чтобы отменить выбор, откройте файл .xib, щелкните по первой кнопке над меню с правой стороны, затем снимите флажок «Использовать автозапуск» под «Документом конструктора интерфейса». –