即使其框架是窗口边界属性,UIView子类的实例也不是全屏

时间:2015-05-01 11:01:44

标签: ios objective-c uiview

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.

    CGRect frame = self.window.bounds;
    BNRHypnosisView *firstView = [[BNRHypnosisView alloc] initWithFrame:frame];
    [self.window addSubview:firstView];
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
}

BNRHypnsosisView(UIView的子类)firstView的实例,其框架等于窗口边界。为什么它不全屏?

编辑:在BNRHypnosis View中,我有一个@property(非原子)CGRect框架。这是我在这个子类中唯一拥有的东西。在我删除它之后(我已经看到我没有在任何地方使用它),一切正常。有人可以告诉我为什么吗?

1 个答案:

答案 0 :(得分:1)

声明的“frame”属性覆盖UIView的现有属性“frame”。它是iOS中任何UIView的基本属性。如果您覆盖它,则必须在实现中调用[super setFrame:<frameValue>],以免失去基本功能和强制功能。

这个声明的属性在GitHub上的BNRHypnosisView的实际实现中不存在:https://github.com/rahims/iOS-Programming-The-Big-Nerd-Ranch-Guide/blob/master/Chapter-5/Hypnosister/Hypnosister/BNRHypnosisView.h