2016-11-24 10 views
0

Вопрос - В обратном вызове «layoutSubviews» пользовательского UIScrollView, как можно обнаружить различную прокрутку (которая может не потребовать повторной компоновки подзаголовка) с другими событиями, такими как изменение ориентации (что требует повторной компоновки) ?UIScrollView - определение прокрутки и изменение ориентации в layoutSubviews?

фон - Я хочу, чтобы добавить/удалить подвидов программно, как прокрутка происходит, но в этом случае существующие взгляды на Scrollview не нужно повторно раскладку, так что я не хочу, чтобы пройти через все эти расчеты. Однако, когда происходит событие, такое как изменение ориентации, я хочу пересчитать все позиции. Поэтому мой вопрос направлен на поиск наилучшего подхода к решению этого. В этом случае я, кстати, не хочу использовать UIContainerView.

ответ

1
let priorLayoutSize = CGSize.zero 

func layoutSubviews() { 
    super.layoutSubviews() 

    let layoutSize = bounds.size 
    if layoutSize != priorLayoutSize { 
     priorLayoutSize = layoutSize 
     // do full layout 
    } else { 
     // do incremental layout 
    } 
} 
+0

thanks Rob - знаете ли вы, что это нормально, когда эта проверка выполнена, то есть в layoutSubviews? интересно, если мне не хватает другого обратного вызова, я должен учитывать – Greg

+0

Это хорошее место для этого. –