我想把文本vertically放在一个填满整个屏幕的大UITextView中,这样当文本很少的时候,比如说几个词,它就会按高度居中. 这不是关于将文本居中(可以在IB中找到的属性)的问题,而是关于将文本vertically放在UITextView中间的问题.由于文本很短,所以UITextView中没有空白区域. 这是可以做到的吗?提前谢谢!

推荐答案

加载视图时,首先为UITextViewcontentSize键值添加观察者:

- (void) viewDidLoad {
     [textField addObserver:self forKeyPath:@"contentSize" options:(NSKeyValueObservingOptionNew) context:NULL];
     [super viewDidLoad];
}

然后添加此方法,以便在每次contentSize值更改时调整contentOffset:

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
     UITextView *tv = object;
     CGFloat topCorrect = ([tv bounds].size.height - [tv contentSize].height * [tv zoomScale])/2.0;
     topCorrect = ( topCorrect < 0.0 ? 0.0 : topCorrect );
     tv.contentOffset = (CGPoint){.x = 0, .y = -topCorrect};
}

Ios相关问答推荐

如何遮罩,动画和添加阴影到CAShapeLayer?

使用SWIFT传输表示时的条件文件表示格式

带有故事板的Xcode 15 UIKit视图可以与#Preview宏一起使用吗?

XcodeCloud生成失败,返回";ci_pre_xcodeBuild.sh是可执行文件,但退出时返回2个退出代码.";

SwiftUI 点击列表内不会触发 Select

AVAudioRecord 没有音频

Swift - 缺少函数参数在编译期间不会失败,甚至会导致不同的数据类型?

NumberFormatter 无法使用 Xcode 15.0 beta 正确识别 iOS 17 beta 中的 Locale 货币设置

当 Swift 枚举具有 any existential 作为其关联值之一时,我如何使它符合 `Equatable`?

var name: String 时 print(nil) 和 print(name) 的区别? = 无

在 Swift 中 @MainActor 似乎被 withCheckedContinuation 而不是其他异步调用继承是巧合吗?

Apollo iOS 客户端代码生成:错误:无法查询字段

更改图标会导致 SwiftUI 动画出现故障?

在视图控制器中实例化视图控制器是否可能/智能?

使用 @MainActor 更新 UI 的适当策略是什么?

通过MatchedGeometryEffect向上滑动视图

Flutter:无法构建 iOS 应用程序ARCHIVE FAILED,为设备归档时遇到错误

-1103 错误域=NSURLErrorDomain 代码=-1103资源超过最大大小iOS 13

界面生成器 - 无法从路径加载设计对象(空)

iOS:如何从 URL 调试新启动应用程序