如何以编程方式设置 UILabel 位置 iOS 7

Posted

技术标签:

【中文标题】如何以编程方式设置 UILabel 位置 iOS 7【英文标题】:How to Set UILabel Position Programmatically iOS 7 【发布时间】:2014-01-02 20:51:35 【问题描述】:

我迁移到 Xcode 5 并开始为 ios 7 编程。我正在尝试手动(以编程方式)设置标签的位置,以便为 iPhone 4 设备和 iPhone 5 设备生成不同的布局。我想这应该很容易如下:

viewDidLoad:

myLabel.autoresizingMask = UIViewAutoresizingNone;
myLabel.frame = CGRectMake(10, 10, 280, 21);

至少 *** 上的所有文章都说要这样做,但它不适用于我。无论我在CGRectMake 中输入什么值,标签都不会改变位置。我什至在viewWillLayoutSubviews 中尝试了相同的代码,但也没有用。如果我NSLog 新坐标,它会告诉我它占用了它们,但在模拟器上标签位置没有变化。

有什么建议吗?

【问题讨论】:

您是否强制刷新屏幕,[yourView setNeedsDisplay] 您将其添加为某事物的子视图或 self.view ?被添加为子视图..请检查相对于父视图.. 尝试在 ViewWillAppear 中添加您的标签代码 setNeedsDisplay 没用,我试过了。 viewWillAppear 也不起作用。到目前为止唯一有效的是关闭 Autolayout 的想法(建议如下),但我担心因此我现在必须手动设置所有内容,我不希望那样。我只想手动设置一些项目.. 【参考方案1】:

我认为您必须在 Interface Builder 中关闭主视图的“使用自动布局”标志。 创建新项目时默认启用自动布局。

【讨论】:

这不会影响我所有项目中的所有视图吗?我希望 Autolauout 适用于某些视图(或项目),但不是所有视图。 停止工作,但这是否意味着我现在需要手动设置所有内容的位置? 您可以同时使用设置了自动布局和不使用此功能的视图 - 但您必须决定是否在某个视图上使用它。有一个关于此的 Apple 文档:developer.apple.com/library/ios/documentation/userexperience/… 或者您可以尝试将 UILabel 封装在一个视图中(例如,它是完整视图的大小)并在该视图中禁用 AutoLayout。没有尝试过,但引用的 Apple 文档提到了一些关于此的文字,并且在 Interface Builder 中,您可以在每个视图上指定此标志...【参考方案2】:

在你的 viewDidLoad 中尝试调用

[self.view frame];

这将强制重绘屏幕。 :)

我知道,它看起来像 indus 代码,但有时它会有所帮助 :)

【讨论】:

那么请确保不要在其他方法中更改标签的框架。检查所有 VC 的方法:viewDidLoad、viewWillAppear:、viewDidAppear 等...

以上是关于如何以编程方式设置 UILabel 位置 iOS 7的主要内容,如果未能解决你的问题,请参考以下文章

ios - 如何使用ios swift中的自动布局以编程方式将两个标签并排放置在中心位置?

你在哪里以编程方式在 UIView 中为 UILabel 设置文本?

如何以编程方式在 UILabel 上设置accessibilityLabel?

如何以编程方式在 UILabel 上设置 sizeToFit 宽度和高度?

如何在不同的方向设置 UILabel 的位置

对子类 UIView 的约束会抛出以编程方式创建的 UILabel 位置