我目前正在使用iOS 6.0。
我有一个需要具有特定尺寸的自定义UIView
。如果我以编程方式初始化视图并添加它,那很好。但是,我找不到可以在故事板中设置视图大小的地方。
在故事板中设置其大小不起作用,因为故事板认为它是空的并将其大小设置为零。在viewDidLoad
或viewDidAppear
中设置其大小不起作用,因为稍后大小将被_applyISEngineLayoutValue
覆盖。
答案 0 :(得分:1)
您可以在Interface Builder中执行此操作。打开您拥有视图的故事板并打开实用程序菜单:
然后,您可以在实用程序菜单顶部选择一个看起来像标尺的按钮:
在该菜单中,您可以设置视图的大小以及扩展方式。
另外,请确保您在课堂检查员中设置了班级视图:
来自this site的图片代币。
最后,请务必覆盖initWithFrame
和initWithCoder
方法:
- (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]];
}
答案 1 :(得分:1)
我遇到了同样的问题,我认为简短的回答是:在使用故事板时,你不能依赖于视图的init方法中的框架或边界。
当您的视图由segue初始化时,它将调用initWithCoder:方法而不是其他init方法,因为它正在从.xib文件反序列化您的视图对象。在故事板之前,框架和边界将在调用initWithCoder:时设置,但故事情节似乎不再是这样 - iOS代码稍后会设置这些值。
我使用了几种解决方法,具体取决于具体情况:
如果我事先知道视图的大小(例如只支持一种尺寸的专业视图),我在initWithCoder:方法中设置我自己的框架。
如果我不知道视图的大小,我会推迟对特定于大小的事物的初始化,直到调用我的视图的layoutSubviews方法。
如果它更方便,我有时只是在视图的ViewController中明确地执行特定于大小的初始化。 (不漂亮,但有时快速而简单。我并不自豪。)
答案 2 :(得分:0)
我遇到与您相同的问题,当我选择视图并切换到属性检查器时,进行设置 “Simulated Metrics”如下所示,我可以在Size检查器中调整视图大小。
确保将“大小”设置为“自由形式”或“无”