3

我目前使用的是 iOS 6.0。

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

在情节提要中设置其大小不起作用,因为情节提要认为它是空的并将其大小设置为零。将其大小设置为viewDidLoadorviewDidAppear不起作用,因为稍后该大小将被_applyISEngineLayoutValue.

4

3 回答 3

1

您可以在 Interface Builder 中执行此操作。打开您有视图的情节提要并打开实用程序菜单:

在此处输入图像描述

然后,您可以在实用程序菜单的顶部选择一个看起来像标尺的按钮:

在此处输入图像描述

在该菜单中,您可以设置视图的大小以及您希望它如何扩展。

另外,请确保您在班级检查器中设置了班级视图:

在此处输入图像描述

此站点的图像令牌。

最后,确保你重写了initWithFrameandinitWithCoder方法:

- (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]];
}
于 2012-10-06T10:51:59.720 回答
1

我面临同样的问题,我认为简短的回答是:在使用情节提要时,您不能依赖视图的 init 方法中的框架或边界。

当您的视图被 segue 初始化时,它将调用 initWithCoder: 方法而不是其他 init 方法,因为它正在从 .xib 文件中反序列化您的视图对象。在情节提要之前,框架和边界将在调用 initWithCoder: 时设置,但情节提要似乎不再是这种情况——iOS 代码稍后会设置这些值。

根据情况,我使用了几种解决方法:

  1. 如果我事先知道视图的大小(例如只支持一种大小的特殊视图),我会在 initWithCoder: 方法中设置自己的框架。

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

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

于 2013-04-09T02:05:25.470 回答
0

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

确保将 Size 设置为“Freeform”或“None”

模拟指标

于 2013-07-26T03:29:53.807 回答