2015-09-25 64 views
4

我動態地添加視圖滾動視圖與佈局約束通過編程方式,對於文本視圖組件我想設置高度約束根據textview中設置的文本,所以我沒有創建類延伸UITextView的。在文本視圖類中我已經寫了下面的代碼來添加高度約束。根據內容UITextView高度是錯誤的iOS 9

#import "CETextView.h" 

@implementation CETextView 

- (void)layoutSubviews 
{ 
    [super layoutSubviews]; 

    if (!self.heightConstraint) 
    { 
     self.heightConstraint = [NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:100]; 
     [self addConstraint:self.heightConstraint]; 
    } 
    CGRect lRect = [self contentSizeRect]; 

    CGSize descriptionSize = lRect.size; 
    self.heightConstraint.constant = descriptionSize.height; 

} 

- (CGRect)contentSizeRect 
{ 
    NSTextContainer* textContainer = [self textContainer]; 
    NSLayoutManager* layoutManager = [self layoutManager]; 
    [layoutManager ensureLayoutForTextContainer: textContainer]; 
    CGRect lRect = CGRectMake(0, 0,320, 500); 
    lRect.size = self.contentSize; 
    lRect.size.height = lRect.size.height + 5; 
    return lRect; 
} 


@end 

該代碼給出了iOS 8.0中的正確高度,但在iOS 9.0中給出了錯誤的高度。我檢查了iOS 9.0新版本的apple文檔,其中有一些與自動佈局有關的更改。

任何幫助表示讚賞。

回答

2

不知道你是否解決了這個問題,但是我在牆上打了幾個小時,直到我確定啓用滾動設置爲YES,用於我嘗試調整大小的UITextViews。不知道這是否會解決您的問題,它似乎稍有不同。

iOS 8調整高度就好了,啓用滾動設置爲NO,但是如果啓用滾動爲NO,iOS 9將不會調整高度約束。我剛剛在故事板上的文字框中查看了所有文本視圖,並在此之後調整了所有內容。

+0

我sizeTofit()不工作,因爲滾動已啓用,謝謝!很有幫助。 –

1

contentSize不可信,因爲它會更新,直到下一個runloop。你應該使用「sizeThatFits」

相關問題