您如何将 UITextView 居中作为 UIView 的子视图?
Posted
技术标签:
【中文标题】您如何将 UITextView 居中作为 UIView 的子视图?【英文标题】:How would you center a UITextView as a subview of a UIView? 【发布时间】:2014-12-18 04:12:43 【问题描述】:我有一个位于 UIView 内的 UITextView。我设法使用以下代码将 UITextView 居中:
self.textView.textAlignment = NSTextAlignmentCenter;
现在,文本在 UITextView 中居中,但我也想在 UIView 中居中 UITextView。
我怎样才能做到这一点?
我尝试了以下代码,但似乎什么也没做。
[self.textView setCenter:CGPointMake(self.topView.frame.size.width/2 - self.textView.frame.size.width/2, self.topView.frame.size.height/2)];
谢谢
【问题讨论】:
尝试self.textView.center = urView.center
或设置水平和垂直对齐约束。
文本视图是如何创建的?故事板?西布?代码?您使用的是约束还是自动布局?
@rmaddy,文本视图是在 Storyboard 中使用常量创建的
那么很可能约束会阻止您设置中心。正确设置约束以使文本视图居中。
我在 UIView 中设置了具有水平和垂直中心约束的文本视图,但没有进行任何更改
【参考方案1】:
你需要在这里做一些数学计算。
Center = (superView.size / 2) - (subView.size / 2);
所以你必须将 superview.size(宽度和高度)除以 2,使其成为一半大小。然后将 subview.size 除以一半以调整帧中的中心点。
请参阅下面的代码将适用于您。
CGFloat centerX = (self.topView.frame.size.width / 2) - (self.textView.frame.size.width / 2);
CGFloat centerY = (self.topView.frame.size.height / 2) - (self.textView.frame.size.height / 2);
CGRect rect = self.textView.frame;
rect.origin.x = centerX;
rect.origin.y = centerY;
[self.textView setFrame:rect];
确保 AutoLyout
对应用程序禁用。我的意思是
但是如果您支持自动布局,那么这将不起作用。为此,您必须在 textView 上为位置 x 和位置 y 设置约束。
查看 Moving views with constraints 以设置自动布局约束。
【讨论】:
嗨 kampai,我确实启用了自动布局。查看您的另一个线程,当您说位置 x 和位置 y 的约束时,您的意思是我需要将文本视图的顶部和底部的约束设置为距离 topView x 像素吗? 谢谢,在启用自动布局的情况下无法以编程方式执行此操作吗? 实际上自动布局会限制视图以更改其大小和位置,我将如何搜索其他方式,明天我会继续更新。 感谢 Kampai!..关于您的另一个线程的最后一个问题,这是否也意味着由于我启用了自动布局,如果我想使用动画来实现其他海报所做的事情,不行吗? 动画会起作用。只是我们在定位或更改与 Storyboard 不同的大小时需要采取。但是如果你通过代码创建视图,那么你不需要为此使用约束。【参考方案2】:试试
[self.textView setTextAlignment:NSTextAlignmentCenter];
[self.textView setCenter:self.topView.center];
【讨论】:
以上是关于您如何将 UITextView 居中作为 UIView 的子视图?的主要内容,如果未能解决你的问题,请参考以下文章