2013-04-28 104 views
2

我有一個UITextView,可以旋轉,調整大小拖動等,一切工作正常在iOS 6和iOS 5時調整大小或旋轉或拖動,但當我旋轉UITextView然後調整以下結果出現:更改UITextView的字體大小後旋轉奇怪的iOS 5

enter image description here

有在TextView中沒有換行,現在,它工作正常在iOS 6 enter image description here

對於旋轉我使用的是:

- (void)rotation:(CGFloat)newAngle { 
    self.transform = CGAffineTransformMakeRotation(newAngle * M_PI/180); 
} 

並調整大小我計算寬度用戶已設置新的字體大小和設置使用範圍:

CGSize newFrameSize = [self sizeThatFits:CGSizeMake([[self getLongestStringInTextView] sizeWithFont:self.font].width + 30, CGFLOAT_MAX)]; 
self.bounds = CGRectMake(self.bounds.origin.x, self.bounds.origin.y, newFrameSize.width, newFrameSize.height); 

我知道它有邊界問題,但我不知道什麼是錯的,或者如果我做什麼都不對

+0

但是,你爲什麼要設置綁定?可能有像sizeToFit這樣的方法。 – Iducool 2013-04-28 11:35:49

+0

在這裏,你可以使用框架而不是邊界 – Iducool 2013-04-28 11:38:15

+0

我得到的設置框架和中心點的相同結果和框架也不適用於iOS 6. sizeToFit做同樣的事情,我也做,它也不適用於多行UITextView – Efesus 2013-04-28 12:20:03

回答

0

好的,我修好了。

我們有一個國際志願者組織觀察員界

[self addObserver:self forKeyPath:@"bounds" options:NSKeyValueObservingOptionOld context:NULL]; 

跟蹤範圍的更改,並設置邊界來CGRectZero

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { 
    if ([keyPath isEqualToString:@"bounds"]) { 
     [self removeObserver:self forKeyPath:@"bounds"]; 

     CGRect bounds = self.bounds; 
     self.bounds = CGRectZero; 
     self.bounds = bounds; 

     [self addObserver:self forKeyPath:@"bounds" options:NSKeyValueObservingOptionOld context:NULL]; 
    } 
} 

其在iOS 6中工作正常,但不會在iOS 5,這得到了固定通過也設置框架CGRectZero

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { 
    if ([keyPath isEqualToString:@"bounds"]) { 
     [self removeObserver:self forKeyPath:@"bounds"]; 

     CGRect bounds = self.bounds; 
     CGRect frame = self.frame; 
     self.frame = CGRectZero; 
     self.bounds = CGRectZero; 
     self.frame = frame; 
     self.bounds = bounds; 

     [self addObserver:self forKeyPath:@"bounds" options:NSKeyValueObservingOptionOld context:NULL]; 
    } 
}