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