2010-11-01 75 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];