To support our app on iPhoneX, We may need to check whether it is running on iPhone X or not.
We can check it using device’s,
- Model
- Dimensions
To get to know whether it is iPhoneX or not, But this may fail in future If Apple comes with a device having safe area apart iPhoneX
The best way is to check whether device is having safe area or not.
-----------------------------------------------------------------------------
- (BOOL)isDeviceHavingSafeArea {
if (@available(iOS 11, *)) {
if ([UIApplication sharedApplication].keyWindow.safeAreaInsets.bottom > 0.0) {
return YES;
}
}
return NO;
}
- (UIEdgeInsets)safeAreaInsets {
if ([self isDeviceHavingSafeArea]) {
return [UIApplication sharedApplication].keyWindow.safeAreaInsets;
}
return UIEdgeInsetsZero;
}
-----------------------------------------------------------------------------
Hope this post is useful. Feel free to comment incase of any queries.
Swift Protocols & Extensions |
---|
Swift Comparable Protocol |
Swift Equatable Protocol |
Protocol Extensions for Default and Convenient API |
Protocols vs Base classes |
Multiple Inheritance using protocols |
Swift Protocol Extensions |
Swift Constrained Extensions |
Multiple Inheritance, Diamond problem |
Multiple Inheritance using protocols, Diamond Problem |
Swift - Preserving Structure Default Initializer using Extensions |
Swift Closures |
---|
Swift Closures Capture List |
Swift Escaping Closures (@escaping) |
Swift - weak and unowned references |
Swift 4 Tutorials |
---|
Swift 4 NEW Tutorial-1 (One Sided Ranges) |
Swift 4 NEW Tutorial-2 (Strings are Collections Again) |
Swift 4 NEW Tutorial-3 (private instead fileprivate) |
Swift 4 NEW Tutorial-4 (fileprivate to private) |
Swift CoreData Tutorials |
---|
Swift - CoreData - CRUD Operations (Tutorial-1) |
Swift - CoreData - Validations (Tutorial-2) |
Swift - CoreData - To One Relationship (Tutorial-3) |
Swift - CoreData - To One - Inverse Relationship (Tutorial-4) |
Swift - CoreData - To Many - Inverse Relationship (Tutorial-5) |
Method Swizzling Tutorials |
---|
Swift 4, Method initailize defines Objective-C class method initialize(), which is not guaranteed to be invoked by Swift and will be disallowed in future versions |
Swift 4 Method Swizzling (Part 2/2) |
Swift 4 Method Swizzling (Part 1/2) |
NSPredicate Tutorials |
---|
Objective C NSPredicate Part 1/4 |
Objective C NSPredicate Part 2/4 |
Objective C NSPredicate Part 3/4 |
Objective C NSPredicate Part 4/4 |
iOS Fixing Security Vulerabilities Tutorials |
---|
iOS Format String Attacks |
iOS Jailbreak Unchecked File Operation Result Code |
iOS Screen Caching Security Vulnerability |
XMPP Chat Framework Tutorials |
---|
Encoding & Decoding emoji characters In the chat applications using Objective C |
Objective C methods for new user registration in xmpp framework |
Objective-C XMPP search users by username |
Retrieving chat history from Openfire using XMPP |
Displaying emoji characters in UILabel |
Getting old messages or chat history from XMPP |
XMPP searching users by username |
XMPP framework User Registration Methods |
XMPP user change password using Objective C |
Change XMPP registered user password |
Blog Archive |
---|
Custom cell class data source in MVVM design pattern |
Swift - Multiple levels of Optional Binding |
Swift - App is currently in Main Thread or not |
Swift Nil-Coalescing Operator for Optionals |
Enum raw value comparisons |
guard statement return/break/continue |
Case-sensitive and Case-Insensitive sorting |
valueForKey (vs) objectForKey |
If-Let & Guard-Let Multiple Optional Bindings |
Color and Image Literals |
Swift Enums as Models |
Swift convenience initializers |
Tappable links in UITextView |
UITableView Scrolling issue for cells having UITextField/UITextView as subviews |
illegal Configuration Safe Area Layout Guide before iOS 9.0 |
iOS Checking device is in 24 hour format or not |
Displaying URL loading error in WebView in HTML format |
Checking whether iOS app is running in a device having safe area (iPhoneX) or not |
xcodebuild: error: invalid option '-exportFormat' |
Interface Segregation Principle in SOLID (Object-Oriented Design) |
Swift - Handling web links in dynamic content |
Swift - Class and Static Methods |
Swift - MVVM - RXSwift Instead of didSet() |
Swift Failable Initializers |
Objective-C/Swift avoid crashes in iPad in an iPhone Application |
No comments:
Post a Comment