我目前使用的是 iOS 6.0。
我有一个UIView
需要有一定尺寸的定制。如果我以编程方式初始化视图并添加它就可以了。但是,我找不到可以在情节提要中设置视图大小的地方。
在情节提要中设置其大小不起作用,因为情节提要认为它是空的并将其大小设置为零。将其大小设置为viewDidLoad
orviewDidAppear
不起作用,因为稍后该大小将被_applyISEngineLayoutValue
.
我目前使用的是 iOS 6.0。
我有一个UIView
需要有一定尺寸的定制。如果我以编程方式初始化视图并添加它就可以了。但是,我找不到可以在情节提要中设置视图大小的地方。
在情节提要中设置其大小不起作用,因为情节提要认为它是空的并将其大小设置为零。将其大小设置为viewDidLoad
orviewDidAppear
不起作用,因为稍后该大小将被_applyISEngineLayoutValue
.
您可以在 Interface Builder 中执行此操作。打开您有视图的情节提要并打开实用程序菜单:
然后,您可以在实用程序菜单的顶部选择一个看起来像标尺的按钮:
在该菜单中,您可以设置视图的大小以及您希望它如何扩展。
另外,请确保您在班级检查器中设置了班级视图:
此站点的图像令牌。
最后,确保你重写了initWithFrame
andinitWithCoder
方法:
- (id)initWithFrame:(CGRect)frame {
return [super initWithFrame:frame];
}
//Needs to be overrided when you set your size in interface builder
- (id)initWithCoder:(NSCoder *)aDecoder {
return [self initWithFrame:[self frame]];
}
我面临同样的问题,我认为简短的回答是:在使用情节提要时,您不能依赖视图的 init 方法中的框架或边界。
当您的视图被 segue 初始化时,它将调用 initWithCoder: 方法而不是其他 init 方法,因为它正在从 .xib 文件中反序列化您的视图对象。在情节提要之前,框架和边界将在调用 initWithCoder: 时设置,但情节提要似乎不再是这种情况——iOS 代码稍后会设置这些值。
根据情况,我使用了几种解决方法:
如果我事先知道视图的大小(例如只支持一种大小的特殊视图),我会在 initWithCoder: 方法中设置自己的框架。
如果我不知道视图的大小,我会推迟特定大小的初始化,直到调用我的视图的 layoutSubviews 方法。
如果更方便,我有时只是在视图的 ViewController 中显式地执行特定于大小的初始化。(不漂亮,但有时又快又容易。我并不自豪。)
我和你有同样的问题,当我选择视图并切换到属性检查器时,如下设置“模拟指标”,我可以在尺寸检查器中调整视图的大小。
确保将 Size 设置为“Freeform”或“None”