代码之家  ›  专栏  ›  技术社区  ›  Thomas Clayson

UITextView旋转导致内容大小大于帧宽度

  •  3
  • Thomas Clayson  · 技术社区  · 14 年前

    基本上,我有一个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/10点),即使宽度为<100!

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

    谢谢 汤姆

    2 回复  |  直到 12 年前
        1
  •  3
  •   AechoLiu    14 年前

    我认为你不应该旋转文本视图,你应该旋转的是它下面的视图。例如,导航控制器的视图,或视图控制器的内容视图。

        2
  •  4
  •   Armands Antans    12 年前

    我也被这个问题困住了。

    我找到的唯一解决方案是创建uiview实例并将uiextview添加为子视图。然后您可以旋转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];