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

标签 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 框架。这是我在这个小类唯一拥有的东西。在我删除它之后(我发现我没有在任何地方使用它),一切都工作正常。谁能告诉我为什么?

最佳答案

声明的“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

关于ios - UIView 子类的实例不是全屏,即使它的框架是窗口边界属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29985698/

相关文章:

ios - 将 float 的 UIButton 放在 UICollectionView 之上

android - 智能手机之间的蓝牙局域网?一对多电话连接?

objective-c - 在 iPhone Xcode 3.2.5、iOS 4.2.1 中分配和释放内存

iphone - 可以在 App Delegate 中调用 Web 服务吗?

iphone - 在多个矩形中绘制一个 NSString

ios - 在 swift 2.0 中一次显示一个字符的文本

ios - Gamecenter 匹配数据未更新

ios - 构建具有与经典蓝牙设备配对功能的 iOS 应用程序

ios - UIScrollView 与 UIView (Swift)

ios - 如何访问 subview 中的按钮