我有一個水平分頁UIScrollView設置有兩個頁面。在scrollview中有一個「內容視圖」,其中設置了約束條件,使其成爲scrollview的「內容大小」。內容視圖包含兩個子視圖,第一頁和第二頁。這工作正常,我可以在兩頁之間水平頁面。沒有垂直的「反彈」,因爲頁面正好填滿了內容大小。UITextView裏面的UIScrollView
我還沒有添加任何東西到第一頁,但是我在第二頁添加了一個UITextView。此文本視圖具有約束設置,以便它在第二頁居中,並適合第二頁。意圖是,這隻會顯示短暫的blurb,因此scrollEnabled在文本視圖中設置爲NO。文字應該很容易地放在空間內而不會被切斷。
我在文本視圖中放置了一些虛擬文本,一切正常。然後,我稍微增加了字體。儘管文本仍然很容易放入允許的空間內,但我現在會在滾動視圖上收到一個垂直「反彈」 - 就好像內容大小現在垂直較大(或者插入已更改)。我已經檢查過這些,並且它們與字體更改之前的字體完全一樣。文本視圖的內在內容大小稍大(因爲字體大小增加),但同樣在限制範圍內。什麼導致了垂直反彈?
這裏是代碼建立的意見和約束。請注意,這是在表視圖單元格(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]];