NotchKit是一种简单的方法来隐藏iPhone X的刘海,并为您的应用创建类似卡片式的界面。灵感来源于Sebastiaan de With的这条推文
我希望/i/愿iPhone 8的UI看起来像这样:使用黑色OLED或壁纸背后的应用来使应用看起来像是“卡片”。这将很漂亮。pic.twitter.com/mravS87NFy
— Sebastiaan de With (@sdw) 2017年8月31日
以下是它的样子
NotchKit可通过CocoaPods和Carthage提供。
整合NotchKit极其简单。首先,在存储您的AppDelegate的文件中导入NotchKit
。
然后,将didFinishLaunchingWithOptions
方法替换为以下代码,并用您的自定义视图控制器类的名称替换ViewController
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
window = NotchKitWindow(frame: UIScreen.main.bounds)
let rootViewController = ViewController()
window?.rootViewController = rootViewController
window?.makeKeyAndVisible()
return true
}
如果您使用Storyboard,您可以实例化Storyboard并使用以下代码在代码中获取新的rootViewController
,并用您的Storyboard的类名替换Main
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let rootViewController = storyboard.instantiateInitialViewController()
如果您针对的iOS版本早于iOS 11,您仍然可以通过条件加载NotchKitWindow
使用NotchKit,如下所示,使用#available
语法
window = {
if #available(iOS 11, *) {
return NotchKitWindow()
} else {
return UIWindow()
}
}()
这就是全部了,你已经完成了!
NotchKit提供了一些定制点。
您可以通过将窗口用作NotchKitWindow
来从任何属于窗口的视图或视图控制器调整这些内容,如下所示
(view.window as? NotchKitWindow)?.propertyToCustomise = valueYouWantToSet
默认情况下,NotchKit在所有设备上隐藏状态栏和Home指示器。但是,如果您选择,可以将此行为限制为仅iPhone X,在其他设备上不执行任何操作,通过将shouldShowBarsOnlyOniPhoneX
属性设置为true
。
默认情况下,NotchKit会对适用边缘进行遮罩。您可以使用maskedEdges
属性自定义此行为,该属性接受一个指定您想要遮罩的边缘的UIRectEdge
对象。
您可以通过.cornerRadius
属性自定义窗口的圆角半径。此属性是一个枚举,可以是.standard
,这意味着为您计算所有数值以显示合适的圆角半径,或者您可以设置一个自定义值,将其设置为.custom(n)
,其中n
是您选择的个性化圆角半径。
由Harshil Shah撰写。您可以在Twitter上找到我。
NotchKit可在MIT许可下使用。有关更多信息,请参阅LICENSE文件。
提示:这基本上是在争论如何处理iPhone X的不同方法时作为玩笑所做。
苹果针对iPhone X更新了人机界面指南,明确提出了这一点
不要遮罩或对关键显示功能进行特别注意。不要尝试通过在屏幕顶部和底部放置黑色栏来隐藏设备的圆角、传感器外壳或访问主屏幕的指示器。也不要使用括号、边框、形状或说明性文字等视觉装饰来突出强调这些区域。
我不确定违反HIG是否常被用作拒绝的理由,但我不会就此打赌。
只用了几天在模拟器上使用,我就意识到欣然接受刘海是前进的道路。我将开源这个项目是为了让其他人也能更容易得出这个结论。
#EmbraceTheNotch