2013-12-05 4 views
5

Я добавляю 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)); 
} 

Screenshot

+0

Автоматическая компоновка на? Постскриптум Если вы хотите быстрое и грязное довольно универсальное решение, вы можете сбросить смещение содержимого на CGPointZero в - (void) viewDidLayoutSubviews. –

+0

нет, не думаю. Я не использую раскадровки и не включаю его в какие-либо представления в коде. – fabian789

+0

Вам не нужно использовать раскадровку, чтобы включить автоматическую компоновку; Фактически, я думаю, что это разрешено в xibs, по умолчанию. Чтобы отменить выбор, откройте файл .xib, щелкните по первой кнопке над меню с правой стороны, затем снимите флажок «Использовать автозапуск» под «Документом конструктора интерфейса». –

ответ

15

Установите automaticallyAdjustsScrollViewInsets на геймпаде вид на NO, в противном случае он будет регулировать врезки на первом подвид этого Высказаться корень, который случается быть UIScrollView класса.

Подробнее об этом в iOS 7 Transition Guide.

Смежные вопросы