ios – 将转换应用于UITextView – 防止内容大小调整

前端之家收集整理的这篇文章主要介绍了ios – 将转换应用于UITextView – 防止内容大小调整前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我将一个旋转变换应用到一个UITextView,然后点击里面开始编辑,看起来内容大小自动被更广泛.内容视图的新宽度是旋转视图的边框的宽度.例如,给定宽度500和高度400的文本框,并旋转30度,新的内容宽度将为:
(500 * cos(30)) + (400 * sin(30)) = 633

或图形:

有趣的是,如果您已经在编辑文本视图,然后应用该转换,那么似乎没有修改内容大小.所以看起来,在文本编辑开始的某个时候,文本视图查看其帧属性,并根据帧宽调整内容大小.我想象的解决方案是告诉它使用bounds属性,但是我不知道该怎么做,因为我不知道文本视图在哪里决定修改内容大小.

我有谷歌搜索,但似乎没有找到任何使用转换的UITextViews的引用.有人有什么想法吗?

编辑(来自测试项目的按钮操作):

- (IBAction)rotateButtonTapped:(id)sender {
    if (CGAffineTransformIsIdentity(self.textView.transform)) {
        self.textView.transform = CGAffineTransformMakeRotation(30.0 * M_PI / 180.0);
    }
    else {
        self.textView.transform = CGAffineTransformIdentity;
    }

    NSLog(@"contentsize: %.0f,%.0f",textView.contentSize.width,textView.contentSize.height);
}

解决方法

我也被困在这个问题上.

我发现唯一的解决方案是创建一个UIView的实例,并添加UITextView作为子视图.然后你可以旋转UIView的实例,UITextView将工作正常.

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

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

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

猜你在找的iOS相关文章