如何以编程方式设置 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?