0

在我的主视图控制器中,我有这个:

// .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 将根据其内容为自己获取框架,所以我不想在我的 viewController 上用initWithFrame.

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

4

2 回答 2

0

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

于 2013-09-21T19:27:05.123 回答
0

我不认为它可以根据其内容获取框架,除非您使用自动布局。一个正确的方法是你用CGRectZero. 然后在您准备好后设置框架。或者您可以采用自动布局。

于 2013-09-21T19:13:44.687 回答