2010-11-01 72 views
3

基本上我有一個UITextView,當我旋轉它時,內容大小比幀大小更寬。這會導致文本視圖在幀外沒有文本時水平滾動。這種行爲是不需要的。UITextView旋轉導致內容大小比幀寬度更寬

UITextView *ingredientsTextView = [[[UITextView alloc] initWithFrame:CGRectMake(50, 100,315,300)] autorelease]; 
    [ingredientsTextView setBackgroundColor:[UIColor clearColor]]; 
    [ingredientsTextView setEditable:NO]; 
    [ingredientsTextView setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin]; 
    [ingredientsTextView setFont:[UIFont fontWithName:@"Helvetica" size:18]]; 
    [ingredientsTextView setText:ingredientsText]; 
    ingredientsTextView.transform = CGAffineTransformMakeRotation((3.44*M_PI)/180); 
    [ingredientsView addSubview:ingredientsTextView]; 

我不明白爲什麼會發生這種情況。即使使用setContentSize方法,即使寬度爲< 100,也會使其水平滾動(僅約5/10pts)!

任何想法?這只是旋轉的副作用嗎?

感謝 湯姆

回答

3

我想你不應該旋轉TextView的,你應該是旋轉其下的視圖。例如,navigationController的視圖或viewController的內容視圖。

+0

嗯,好的 - 我把它變成了一個uilabel,並把它放到一個滾動視圖中,並旋轉它,這似乎工作。 – 2010-11-01 13:04:24

4

我也被這個問題困住了。

我發現的唯一解決方案是創建UIView的實例並將UITextView添加爲子視圖。然後你可以旋轉UIView的實例,並且UITextView可以正常工作。

UITextView *myTextView = [[UITextView alloc] init]; 
[myTextView setFrame:CGRectMake(0, 0, 100, 100)]; 

UIView *myRotateView = [[UIView alloc] init]; 
[myRotateView setFrame:CGRectMake(20, 20, 100, 100)]; 
[myRotateView setBackgroundColor:[UIColor clearColor]]; 
[myRotateView addSubview:myTextView]; 

myRotateView.transform = CGAffineTransformMakeRotation(0.8); 
[[self view] addSubview:myRotateView];