2014-07-20 80 views
0

我有一個水平分頁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]]; 

回答

0

您是否嘗試過簡單地停止界面生成器中的Storyboard的垂直反彈?