UITextView旋转导致内容大小比帧宽更宽

时间:2010-11-01 11:37:42

标签: iphone ipad 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方法,它也会导致它水平滚动(仅约5 / 10pts),即使宽度<1。 100!

有什么想法吗?这只是旋转的副作用吗?

由于 汤姆

2 个答案:

答案 0 :(得分: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];

答案 1 :(得分:3)

我认为你不应该旋转textView,你应该旋转的是它下面的视图。例如,navigationController的视图,或viewController的内容视图。