如何初始化UIView

时间:2013-09-21 18:45:09

标签: iphone ios objective-c uiview

在我的主viewController中,我有这个:

// .h
#import "YNSlidingMenu.h"

@interface YNAddNoteViewController : UIViewController
@property (nonatomic, strong) YNSlidingMenu *slidingMenu;
@end

// .m
- (void)setUpSlidingMenu{
    _slidingMenu = [[YNSlidingMenu alloc]init];
    [self.view addSubview:_slidingMenu];
}

在YNSlidingMenu.m中,我有这个:

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [self configureView];
    }

    return self;
}

- (id)init{
    self = [super init];
    if (self) {
        NSLog(@"init");
    }

    return self;
}

- (void)configureView{
    NSLog(@"configureView");
    self.rect = CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, 40);
}

YNSlidingMenu将根据其内容获取自己的框架,因此我不想在initWithFrame的viewController上初始化它。

我需要做什么? NSLog(@"init");没有被调用。如何在不从viewController设置框架的情况下初始化自定义视图?

2 个答案:

答案 0 :(得分:0)

我不认为它可以根据其内容得到它的框架,除非你使用自动布局。 一种正确的方法是,您使用CGRectZero初始化视图。然后在准备好后设置框架。 或者你可以采用自动布局。

答案 1 :(得分:0)

在初始化视图时,将[self configureView]从initWithFrame:方法中移出并作为调用init进入init方法。至少这是你的示例代码的样子。