Objective c 如何使用脚本设置UIView init的大小?

Objective c 如何使用脚本设置UIView init的大小?,objective-c,ios,uiview,uistoryboard,Objective C,Ios,Uiview,Uistoryboard,我目前正在使用iOS 6.0 我有一个自定义UIView,它需要有一定的大小。如果我以编程的方式初始化视图并添加它,就可以了。但是,我找不到一个可以在情节提要中设置视图大小的位置 在情节提要中设置其大小不起作用,因为情节提要认为它是空的,并将其大小设置为零。在viewDidLoad或ViewDidAspect中设置其大小不起作用,因为稍后该大小将被_ApplyEngineLayoutValue覆盖 您可以在界面生成器中执行此操作。打开具有视图的情节提要,然后打开“实用程序”菜单: 然后,您可以在

我目前正在使用iOS 6.0

我有一个自定义UIView,它需要有一定的大小。如果我以编程的方式初始化视图并添加它,就可以了。但是,我找不到一个可以在情节提要中设置视图大小的位置


在情节提要中设置其大小不起作用,因为情节提要认为它是空的,并将其大小设置为零。在viewDidLoad或ViewDidAspect中设置其大小不起作用,因为稍后该大小将被_ApplyEngineLayoutValue覆盖

您可以在界面生成器中执行此操作。打开具有视图的情节提要,然后打开“实用程序”菜单:

然后,您可以在“实用程序”菜单顶部选择一个类似标尺的按钮:

在该菜单中,您可以设置视图的大小和展开方式

此外,请确保在类检查器中设置了类的视图:

来自的图像标记

最后,确保覆盖initWithFrame和initWithCoder方法:


我面临着同样的问题,我认为简单的答案是:在使用故事板时,不能依赖视图的init方法中的框架或边界

当segue初始化视图时,它将调用initWithCoder:方法而不是其他init方法,因为它正在从.xib文件反序列化视图对象。在故事板出现之前,帧和边界将在调用initWithCoder:时设置,但在故事板中似乎不再是这样,iOS代码将在稍后设置这些值

根据具体情况,我使用了两种变通方法:

如果我事先知道视图的大小,例如只支持一种大小的专业视图,我会在initWithCoder:方法中设置自己的框架

如果我不知道视图的大小,我会推迟特定大小的初始化,直到调用视图的layoutSubviews方法

如果更方便的话,我有时只是在视图的ViewController中显式地执行特定于大小的初始化。不漂亮,但有时又快又容易。我并不骄傲


我和你有同样的问题,当我选择视图并切换到属性检查器时,设置 模拟指标如下,我可以在大小检查器中调整视图的大小

确保“大小”设置为“自由形式”或“无”


正如我所说的,无论我在inspector中设置了什么,大小都将设置为零。您是否如我在编辑中所示在inspector中设置了类?因此,我有一个MyView:UIView和drawRect方法,比如绘制一个圆。然后,我使用storyboard将UIView放在根视图中,将类设置为MyView,并将大小设置为800*600。我所期望的是屏幕上有一个圆圈,但没有,因为视图的大小为零。无论如何,故事板在初始化期间不会提供适当的大小,大小将在稍后设置。您绝对不应该在UIView的单个实例上同时调用initWithCoder:和initWithFrame:。每个对象应该只通过一个指定的初始值设定项一次,并且该代码通过多个指定的初始值设定项运行一个实例。安德鲁,我想你已经一针见血了——在故事板环境中,它是不起作用的。苹果似乎设定得很晚。
- (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]];
}