使用XCode 4设计自定义UIView
以前有人问过这个问题,但我找不到确切的答案 我想设计一个定制的使用XCode 4设计自定义UIView,xcode,uiview,Xcode,Uiview,以前有人问过这个问题,但我找不到确切的答案 我想设计一个定制的UIView类。我想在XCode 4中的XIB文件中进行布局。理想情况下: 我有文件MyView.h、MyView.m和MyView.xib 代码定义了行为,XIB文件定义了布局 代码可能在XIB文件中有引用布局元素的出口 视图的加载程序可以是不同的对象 我希望能够通过以下方式加载视图: MyView *v = [MyView myView]; 我尝试了很多不同的方法来设置文件的所有者并通过NSBundle加载XIB,但我一直遇
UIView
类。我想在XCode 4中的XIB文件中进行布局。理想情况下:
- 我有文件MyView.h、MyView.m和MyView.xib
- 代码定义了行为,XIB文件定义了布局
- 代码可能在XIB文件中有引用布局元素的出口李>
- 视图的加载程序可以是不同的对象李>
MyView *v = [MyView myView];
我尝试了很多不同的方法来设置文件的所有者并通过NSBundle加载XIB,但我一直遇到键值编码问题
有人能分享做这件事的基本方法吗
我有一本书。如您所见,它会生成一个键值编码错误 哦,我好像已经弄明白了 关键点如下:
- XIB文件UIView只需要是通用UIView。无需将其设置为子类
- 文件的所有者必须是您的子类
- 出口归文件所有者所有
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
UINib *nib = [UINib nibWithNibName:NSStringFromClass([self class]) bundle:nil];
UIView *v = [[nib instantiateWithOwner:self options:nil] lastObject];
v.frame = self.frame;
[self addSubview:v];
}
return self;
}
哦,我好像已经弄明白了 关键点如下:
- XIB文件UIView只需要是通用UIView。无需将其设置为子类
- 文件的所有者必须是您的子类
- 出口归文件所有者所有
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
UINib *nib = [UINib nibWithNibName:NSStringFromClass([self class]) bundle:nil];
UIView *v = [[nib instantiateWithOwner:self options:nil] lastObject];
v.frame = self.frame;
[self addSubview:v];
}
return self;
}
你到底是如何实例化它的?在我的“container”类中,我有一个自定义视图的出口作为属性,但是当我尝试执行
self.customView=[[customView alloc]init]时代码>
视图没有出现在屏幕上,尽管我知道它已正确初始化,因为我可以看到我放在自定义视图的initWithFrame:方法中的NSLog()
在我的主视图控制器中,在安装新类之前,视图与我在故事板中定义的视图相同:
但是,在自定义视图的initWithFrame:中,框架是{{0,0},{0,0}
,视图是
初始化完成后,自定义视图的主视图属性几乎是(null)
,这让我感到困惑
我肯定我遗漏了一些非常简单的东西。您甚至应该在情节提要的主视图中定义自定义视图吗
谢谢 您具体如何实例化它?在我的“container”类中,我有一个自定义视图的出口作为属性,但是当我尝试执行self.customView=[[customView alloc]init]时代码>
视图没有出现在屏幕上,尽管我知道它已正确初始化,因为我可以看到我放在自定义视图的initWithFrame:方法中的NSLog()
在我的主视图控制器中,在安装新类之前,视图与我在故事板中定义的视图相同:
但是,在自定义视图的initWithFrame:中,框架是{{0,0},{0,0}
,视图是
初始化完成后,自定义视图的主视图属性几乎是(null)
,这让我感到困惑
我肯定我遗漏了一些非常简单的东西。您甚至应该在情节提要的主视图中定义自定义视图吗
谢谢