当我将旋转变换应用于UITextView
然后点击里面开始编辑,看起来内容尺寸自动变宽了。内容视图的新宽度是旋转视图的边界框的宽度。例如,给定一个宽度为 500、高度为 400 的文本框,并旋转 30 度,新的内容宽度将为:
(500 * cos(30)) + (400 * sin(30)) = 633
或者以图形方式:
有趣的是,如果您已经在编辑文本视图,然后应用转换,那么内容大小似乎不会发生任何修改。因此,似乎在文本编辑开始时,文本视图会查看其frame
属性并根据框架宽度调整内容大小。我想解决这个问题的方法是告诉它使用bounds
属性,但是我不知道在哪里执行此操作,因为我不确定文本视图到底在哪里决定修改内容大小。
我已经用谷歌搜索过,但似乎找不到任何关于使用转换后的 UITextView 的参考。有人对此有什么想法吗?
编辑(测试项目中的按钮操作):
- (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, 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];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)