如何移动界面生成器放置的文本字段和按钮
Posted
技术标签:
【中文标题】如何移动界面生成器放置的文本字段和按钮【英文标题】:How to move a Textfield and Button placed by Interface Builder 【发布时间】:2013-09-12 00:55:47 【问题描述】:我在 3.5 英寸 iPhone 的 Interface Builder 中放置了一个文本字段和按钮。我以编程方式检查它是否是 iPhone 5,如果是则文本字段和按钮。我在视图控制器、文本字段和按钮上未选中“自动调整子视图”。我的代码在 viewDidLoad 中,如果它是 iPhone 5,它会命中行但不会移动文本字段或按钮。
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
CGSize result = [[UIScreen mainScreen] bounds].size;
if(result.height == 568)
self.chatBox.frame = CGRectMake(20,509,201,30);
self.submitButton.frame = CGRectMake(227,504,73,39);
[self.view addSubview:self.chatBox];
[self.view addSubview:self.submitButton];
【问题讨论】:
在条件内不需要 addSubview,因为您正在使用 IB 获取对象。所以删除这两行并记录您的 self.chatBox 和 self.submitButton 对象,这将为您提供它的属性,以便您知道框架是否已更改。 【参考方案1】:如果您使用自动布局,您的约束可能优先于您上面的代码。没有自动布局,我使用了这段代码:
int adjustY=44;
CGPoint iPhone5center=CGPointMake(theButton.center.x,theButton.center.y+adjustY);
theButton.center=iPhone5center;
请参阅this question 了解更多详情。我在滚动视图中使用自动布局时遇到问题。
【讨论】:
如果你使用自动布局,约束设置过程发生在 viewDidLoad 之后。尝试在 viewDidAppear 中添加您的代码。看到这个答案***.com/a/12632880/1203475。【参考方案2】:您在这里遇到的问题是框架被自动布局覆盖。在使用自动布局调整视图上的框架之前,添加以下代码行:
[self setTranslatesAutoresizingMaskIntoConstraints:YES];
这应该将您设置的任何框架转换为新的约束并更新它们。如果您不想将它们转换为约束,显然只需将“NO”传递给此消息即可实现此目的。
【讨论】:
这对我也不起作用。[self setTranslatesAutoresizingMaskIntoConstraints:YES];
语法无效,所以我尝试了 self.submitButton.translatesAutoresizingMaskIntoConstraints = YES;
和 self.view.translatesAutoresizingMaskIntoConstraints = YES;
,两者都不起作用以上是关于如何移动界面生成器放置的文本字段和按钮的主要内容,如果未能解决你的问题,请参考以下文章