更改 UIView 内的 UIButton 框架
Posted
技术标签:
【中文标题】更改 UIView 内的 UIButton 框架【英文标题】:Change UIButton frame inside UIView 【发布时间】:2014-12-15 17:39:58 【问题描述】:我想在 iPhone 4/4s 屏幕上显示不同的 UIButton
/UILabel
/UISlider
尺寸。在父 ViewController viewDidAppear:
方法中,我可以通过调用 viewFormatting
函数来设置新的按钮框架。
- (void) viewFormatting
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
CGSize result = [[UIScreen mainScreen] bounds].size;
//iPhone 4
if (result.height == 480)
self.myButton.frame = CGRectMake(x, y, width, height);
self.myLabel.frame = CGRectMake(x, y, width, height);
//etc.
但是当我尝试在单独的 UIView 类上的 initWithFrame:
内调用相同的方法 viewFormatting
时,按钮/标签框架不会调整大小。我还尝试在layoutSubviews
中调用该函数。我在viewFormatting
中放了一个NSLog
,所以我知道它被正确调用了,但是按钮/标签框架没有改变。
注意:在这两种情况下,我都在 XIB 文件中创建了出口。
非常感谢任何帮助!
【问题讨论】:
写在ViewDidLayoutSubview中 是这样吗? ***.com/questions/19515924/… 你在使用 AutoLayout 吗? 不使用AutoLayout,需要调用viewDidLayoutSubview吗?还是像 viewDidAppear 一样自动调用? @nburk 啊,我使用的是 AutoLayout。我没有选中它,它工作正常。没有意识到单个 xib 可以单独使用自动布局。谢谢! 【参考方案1】:更新:感谢@nburk,我意识到在我的 xib 文件上检查了使用 AutoLayout。删除上面的代码后完美运行。
我会把它留在这里给需要样品的人。
【讨论】:
那么你可以接受你自己的答案,这样更容易被注意到。【参考方案2】:添加这个方法: -(无效)viewDidLayoutSubviews [超级 viewDidLayoutSubviews]; [自我视图格式化];
viewDidLayoutSubviews 会被自动调用。
【讨论】:
以上是关于更改 UIView 内的 UIButton 框架的主要内容,如果未能解决你的问题,请参考以下文章
UIScrollview内的UIView内的UIButton,ARC问题