gpt4 book ai didi

ios - 将转换应用到 UITextView - 防止内容调整大小

转载 作者:IT王子 更新时间:2023-10-29 08:11:22 28 4
gpt4 key购买 nike

当我对 UITextView 应用旋转变换,然后在内部单击开始编辑时,内容大小似乎自动变宽了。内容 View 的新宽度是旋转 View 边界框的宽度。例如,给定一个宽度为 500、高度为 400 的文本框,旋转 30 度后,新的内容宽度将为:

(500 * cos(30)) + (400 * sin(30)) = 633

或图形化:

enter image description here

有趣的是,如果您已经在编辑 TextView 然后应用转换,那么内容大小似乎没有任何修改。因此,似乎在文本编辑开始前后的某个时间, TextView 查看其 frame 属性并根据框架宽度调整内容大小。我想解决这个问题的方法是告诉它改用 bounds 属性,但是我不知道在哪里做这个,因为我不确定 TextView 决定修改的确切位置内容大小。

我用谷歌搜索但似乎找不到任何关于使用转换后的 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 添加为 subview 。然后你可以旋转 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];

关于ios - 将转换应用到 UITextView - 防止内容调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6479727/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com