2014-07-20 6 views
0

У меня есть горизонтальный пейджинг UIScrollView, настроенный на две страницы. Внутри scrollview есть «контентный вид», который имеет ограничения, установленные таким образом, что это «размер содержимого» прокрутки. В представлении содержимого есть два подвыбора, первая страница и вторая. Это нормально работает, и я могу горизонтально перерисовывать страницы между двумя страницами. Нет вертикального «отскока», потому что страницы точно заполняют размер содержимого.UITextView внутри UIScrollView

Я еще ничего не добавил на первую страницу, но добавляю UITextView ко второй странице. Это текстовое представление имеет ограничения, установленные таким образом, чтобы он был центрирован на второй странице и помещался во второй странице. Намерение состоит в том, что в этом случае будет отображаться короткая запись, поэтому scrollEnabled устанавливается для NO для текстового представления. Текст должен легко вписываться в пространство без обрезания.

Я поместил некоторый фиктивный текст в текстовом виде, и все сработало нормально. Затем я немного увеличил шрифт. Хотя текст по-прежнему легко помещается внутри разрешенного пространства, теперь я получаю вертикальный «отскок» на scrollview - его, как будто размер содержимого теперь больше по вертикали (или вставки изменились). Я изучил их, и они все еще точно такие же, как и до изменения шрифта. Внутренний размер содержимого текстового представления немного больше (из-за увеличенного размера шрифта), но опять же в пределах ограничений. Что вызывает вертикальный отскок?

Вот код, определяющий виды и ограничения. Обратите внимание, что это находится внутри ячейки таблицы (c). setInfoPager - это прокрутка по горизонтали пейджинга и является подзором ячеек contentView.

UIView *contentView = [[UIView alloc] init]; 
    contentView.translatesAutoresizingMaskIntoConstraints = NO; 
    [c.setInfoPager addSubview:contentView]; 

    [c.setInfoPager addConstraint:[NSLayoutConstraint constraintWithItem:contentView 
                   attribute:NSLayoutAttributeRight 
                   relatedBy:NSLayoutRelationEqual 
                    toItem:c.setInfoPager 
                   attribute:NSLayoutAttributeRight 
                   multiplier:1.f 
                   constant:0.f]]; 
    [c.setInfoPager addConstraint:[NSLayoutConstraint constraintWithItem:contentView 
                   attribute:NSLayoutAttributeLeft 
                   relatedBy:NSLayoutRelationEqual 
                    toItem:c.setInfoPager 
                   attribute:NSLayoutAttributeLeft 
                   multiplier:1.f 
                   constant:0.f]]; 
    [c.setInfoPager addConstraint:[NSLayoutConstraint constraintWithItem:contentView 
                   attribute:NSLayoutAttributeTop 
                   relatedBy:NSLayoutRelationEqual 
                    toItem:c.setInfoPager 
                   attribute:NSLayoutAttributeTop 
                   multiplier:1.f 
                   constant:0.f]]; 
    [c.setInfoPager addConstraint:[NSLayoutConstraint constraintWithItem:contentView 
                   attribute:NSLayoutAttributeBottom 
                   relatedBy:NSLayoutRelationEqual 
                    toItem:c.setInfoPager 
                   attribute:NSLayoutAttributeBottom 
                   multiplier:1.f 
                   constant:0.f]]; 

    [c.setInfoPager addConstraint:[NSLayoutConstraint constraintWithItem:contentView 
                   attribute:NSLayoutAttributeWidth 
                   relatedBy:NSLayoutRelationEqual 
                    toItem:c.setInfoPager 
                   attribute:NSLayoutAttributeWidth 
                   multiplier:2.0 
                   constant:0.f]]; 
    [c.setInfoPager addConstraint:[NSLayoutConstraint constraintWithItem:contentView 
                   attribute:NSLayoutAttributeHeight 
                   relatedBy:NSLayoutRelationEqual 
                    toItem:c.setInfoPager 
                   attribute:NSLayoutAttributeHeight 
                   multiplier:1.0 
                   constant:0.f]]; 

    UIView *pageOne = [[UIView alloc] init]; 
    pageOne.translatesAutoresizingMaskIntoConstraints = NO; 
    [contentView addSubview:pageOne]; 
    [contentView addConstraint:[NSLayoutConstraint constraintWithItem:pageOne 
                  attribute:NSLayoutAttributeHeight 
                  relatedBy:NSLayoutRelationEqual 
                   toItem:contentView 
                  attribute:NSLayoutAttributeHeight 
                  multiplier:1.f 
                  constant:0.f]]; 
    [contentView addConstraint:[NSLayoutConstraint constraintWithItem:pageOne 
                  attribute:NSLayoutAttributeWidth 
                  relatedBy:NSLayoutRelationEqual 
                   toItem:contentView 
                  attribute:NSLayoutAttributeWidth 
                  multiplier:0.5f 
                  constant:0.f]]; 
    [contentView addConstraint:[NSLayoutConstraint constraintWithItem:pageOne 
                  attribute:NSLayoutAttributeLeft 
                  relatedBy:NSLayoutRelationEqual 
                   toItem:contentView 
                  attribute:NSLayoutAttributeLeft 
                  multiplier:1.f 
                  constant:0.f]]; 
    [contentView addConstraint:[NSLayoutConstraint constraintWithItem:pageOne 
                  attribute:NSLayoutAttributeTop 
                  relatedBy:NSLayoutRelationEqual 
                   toItem:contentView 
                  attribute:NSLayoutAttributeTop 
                  multiplier:1.f 
                  constant:0.f]]; 

    UIView *pageTwo = [[UIView alloc] init]; 
    pageTwo.translatesAutoresizingMaskIntoConstraints = NO; 
    pageTwo.backgroundColor = [UIColor greenColor]; 
    [contentView addSubview:pageTwo]; 
    [contentView addConstraint:[NSLayoutConstraint constraintWithItem:pageTwo 
                  attribute:NSLayoutAttributeHeight 
                  relatedBy:NSLayoutRelationEqual 
                   toItem:contentView 
                  attribute:NSLayoutAttributeHeight 
                  multiplier:1.f 
                  constant:0.f]]; 
    [contentView addConstraint:[NSLayoutConstraint constraintWithItem:pageTwo 
                  attribute:NSLayoutAttributeWidth 
                  relatedBy:NSLayoutRelationEqual 
                   toItem:contentView 
                  attribute:NSLayoutAttributeWidth 
                  multiplier:0.5f 
                  constant:0.f]]; 
    [contentView addConstraint:[NSLayoutConstraint constraintWithItem:pageTwo 
                  attribute:NSLayoutAttributeRight 
                  relatedBy:NSLayoutRelationEqual 
                   toItem:contentView 
                  attribute:NSLayoutAttributeRight 
                  multiplier:1.f 
                  constant:0.f]]; 
    [contentView addConstraint:[NSLayoutConstraint constraintWithItem:pageTwo 
                  attribute:NSLayoutAttributeTop 
                  relatedBy:NSLayoutRelationEqual 
                   toItem:contentView 
                  attribute:NSLayoutAttributeTop 
                  multiplier:1.f 
                  constant:0.f]]; 

    UITextView *cardSetBlurb = [[UITextView alloc] init]; 
    cardSetBlurb.scrollEnabled = NO; 
    cardSetBlurb.translatesAutoresizingMaskIntoConstraints = NO; 
    [pageTwo addSubview:cardSetBlurb]; 
    cardSetBlurb.backgroundColor = [UIColor blackColor]; 
    cardSetBlurb.textColor = [UIColor whiteColor]; 
    cardSetBlurb.userInteractionEnabled = NO; 
    cardSetBlurb.font = [UIFont fontWithName:@"AvenirNext-Regular" size:12.f]; 
    cardSetBlurb.text = @"blah blah blah sdfasdf dsfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf something wicked this way comes"; 

    [pageTwo addConstraint:[NSLayoutConstraint constraintWithItem:cardSetBlurb 
                 attribute:NSLayoutAttributeLeft 
                 relatedBy:NSLayoutRelationGreaterThanOrEqual 
                  toItem:pageTwo 
                 attribute:NSLayoutAttributeLeft 
                 multiplier:1.f 
                 constant:0.f]]; 
    [pageTwo addConstraint:[NSLayoutConstraint constraintWithItem:cardSetBlurb 
                 attribute:NSLayoutAttributeTop 
                 relatedBy:NSLayoutRelationGreaterThanOrEqual 
                  toItem:pageTwo 
                 attribute:NSLayoutAttributeTop 
                 multiplier:1.f 
                 constant:0.f]]; 
    [pageTwo addConstraint:[NSLayoutConstraint constraintWithItem:cardSetBlurb 
                 attribute:NSLayoutAttributeRight 
                 relatedBy:NSLayoutRelationLessThanOrEqual 
                  toItem:pageTwo 
                 attribute:NSLayoutAttributeRight 
                 multiplier:1.f 
                 constant:0.f]]; 
    [pageTwo addConstraint:[NSLayoutConstraint constraintWithItem:cardSetBlurb 
                 attribute:NSLayoutAttributeBottom 
                 relatedBy:NSLayoutRelationLessThanOrEqual 
                  toItem:pageTwo 
                 attribute:NSLayoutAttributeBottom 
                 multiplier:1.f 
                 constant:0.f]]; 
    [pageTwo addConstraint:[NSLayoutConstraint constraintWithItem:cardSetBlurb 
                 attribute:NSLayoutAttributeCenterX 
                 relatedBy:NSLayoutRelationEqual 
                  toItem:pageTwo 
                 attribute:NSLayoutAttributeCenterX 
                 multiplier:1.f 
                 constant:0.f]]; 
    [pageTwo addConstraint:[NSLayoutConstraint constraintWithItem:cardSetBlurb 
                 attribute:NSLayoutAttributeCenterY 
                 relatedBy:NSLayoutRelationEqual 
                  toItem:pageTwo 
                 attribute:NSLayoutAttributeCenterY 
                 multiplier:1.f 
                 constant:0.f]]; 

ответ

0

Вы пытались просто остановить вертикальное отскок от вашей раскадровки в построителе интерфейса?

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