在我的主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设置框架的情况下初始化自定义视图?
答案 0 :(得分:0)
我不认为它可以根据其内容得到它的框架,除非你使用自动布局。
一种正确的方法是,您使用CGRectZero
初始化视图。然后在准备好后设置框架。
或者你可以采用自动布局。
答案 1 :(得分:0)
在初始化视图时,将[self configureView]从initWithFrame:方法中移出并作为调用init进入init方法。至少这是你的示例代码的样子。