2017-11-10 5 views
1

In meiner Anwendung verwende ich einen benutzerdefinierten Pod mit dem Namen MMDrawerController, um eine Dummy-Statusleiste zu erstellen. Leider befindet sich die Höhe der Statusleiste im Pod immer auf .Ändern der Höhe der Statusleiste, abhängig davon, ob das Gerät ein iPhone X ist oder nicht

Um dieses Problem zu beheben ich den folgenden Code geschrieben haben:

App Delegierter

MMDrawerController *mmdrawer = [[MMDrawerController alloc]init]; 


//UPDATE IPHONE X STATUS BAR 
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) { 
    CGSize screenSize = [[UIScreen mainScreen] bounds].size; 
    if (screenSize.height == 812.0f) { 
     NSLog(@"DEVICE NAME : iPhone X"); 
     self.iphoneXHeight = -45.0; 
     self.iphoneXHeightPos = 45.0; 
     mmdrawer.height = 40; 
    } 
    else { 

     self.iphoneXHeight = -20.0; 
     self.iphoneXHeightPos = 20.0; 
     mmdrawer.height = 20; 


    } 
} 

MMDrawerController.h

@property (nonatomic,assign) CGFloat height; 

MMDrawerController.m

_dummyStatusBarView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.view.bounds), self.height)]; 

Problem:

Wenn ich mein Code die height Eigenschaft laufen ist immer 0, würde es begrüßen, wenn jemand kann darauf hinweisen, was ich falsch hier tue und wie würde ich in der Lage Zugang kann die Höhe Eigenschaft und ändern Sie es?

+0

Mögliche Duplikat [iPhone X Statusleiste Höhe] (https://stackoverflow.com/questions/46775477/iphone-x-status-bar-height) – user6788419

Antwort

2

Dont Verwendung Höhe für die Statusleiste befestigt ist, können Sie die Höhe mit diesem Code erhalten:

UIApplication.sharedApplication.statusBarFrame.size.height 
+0

Sie sind Lebensretter, danke! –

0

Ändern Sie diese Zeile.

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) { 
CGSize screenSize = [[UIScreen mainScreen] bounds].size; 
if (screenSize.height == 812.0f) { 
    NSLog(@"DEVICE NAME : iPhone X"); 
    self.iphoneXHeight = -45.0; 
    self.iphoneXHeightPos = 45.0; 
    mmdrawer.height = 40; 
} 

Mit dieser:

if([[UIDevice currentDevice]userInterfaceIdiom]==UIUserInterfaceIdiomPhone) { 
    // determine screen size 
int screenHeight = [UIScreen mainScreen].bounds.size.height; 

switch (screenHeight) { 
     // iPhone 5s 
    case 568: 
     NSLog(@"iPhone 5 or 5S or 5C"); 
     break; 
     // iPhone 6 
    case 667: 
     NSLog(@"iPhone 6/6S/7/8"); 
     break; 
     // iPhone 6 Plus 
    case 736: 
     NSLog(@"iPhone 6+/6S+/7+/8+"); 
     break; 
     // iPhone X 
    case 814: 
     NSLog(@"iPhone X"); 
     break; 
    default: 
     // it's an iPad 
     printf("unknown"); 
} 

} 
Verwandte Themen