iOS11iphonex隐藏Home条隐藏底部⽩条
今天阅读博客时候发现这篇⽂章讲到了如何隐藏home条,特此记录,感兴趣的可以链接过去看看。
众所周知,苹果公司推出了iPhoneX。随之⽽来的是⼀个新的⽩⾊线条,幸福地坐在底部的触摸板上,它替代了原有了home键。这也唤起了⼈
们对物理home键的怀旧情结。
对消费者来说,这意味着苹果公司在硬件和软件创造出了美丽的奇迹,到时可以在预定期预定给予⽀持。对很多开发者来说,这意味着我应该做什
么?谢天谢地,答案相当简单。
本周,我们将看看苹果公司在适配Home指⽰键上给我们提供了什么。
⾸先
我们并不是每天都有新视频和硬件公告,但这正是此后不久发⽣的事情:
在“为iPhoneX⽽设计”⼀⽂中,苹果公司元⽼级设计⼤师迈克·斯特恩(MikeStern)制定了⼀些基本规则。所有的东西都是平等的,在你使⽤
下⾯的新功能之前,你先停住脚步,看看你的使⽤⽅法是否符合相关要求。
尝试避免在home指⽰键附近区域做交互式控制,尤其是通过⼿势识别驱动的交互控制。
不要隐藏指⽰键、在它周围添加任何装饰品、或者试图改变它的外观。在iPhoneX顶部的相机遮光板也是如此。
通常情况下,你不希望隐藏home指⽰键,除⾮你有被动观看体验(如:视频,照⽚幻灯⽚等)。
TL;DR-苹果公司表⽰,⼤多数时候,不要去理会糟糕的指⽰键。
但是,这篇⽂章说的是特殊时间。
UI视图控制器新增功能
不管你是喜欢在每个控制器的基础上适配状态栏,还是对你来说适配都是令⼈厌恶的,苹果公司⼀直在以实例的⽅式做出这样的决定,⽽不是选择
⼀个全球的所有设计。
隐藏home指⽰键基本上与适配状态栏的⽅式相同:
classViewController:UIViewController
{
overridefuncprefersHomeIndicatorAutoHidden()->Bool
{
returntrue
}
}
如上所述,这样的场景应该是异常的,因为这样的默认实现返回fal。然⽽,⽂件中有⼀个特别的评论:
这个系统会考虑你的偏好,但返回YES并不能保证home指⽰键被隐藏。
似乎没有提到为什么或者在什么时候UIKit会不尊重你所选择的偏好,尽管它认为苹果会强制执⾏⾃⼰认为最好的。当苹果认为它是最好时-就会不
顾布尔值。因此,这应该是⼀些有趣的StackOverflow帖⼦。
此外,这可能看起来很明显,但可能是最初令⼈困惑的根源。特别提到的功能名称是以⾃动隐藏结束⽽不是隐藏,这就是说从这⾥返回到true意
味着UIKit会在它的状态良好并准备就绪时隐藏指⽰键(通常情况下是指,控制器⼏秒钟都没有接收任何触摸事件),⽽不是⽴即隐藏指⽰键。
UIKit信号
继续并⾏使⽤应⽤程序状态栏,只是简单地覆盖或分配给有条件地控制覆盖函数的变量是不够的。我们还有另⼀个新增的功能来查看控制器强⼤的
tNeedsSomethingDone函数:
classViewController:UIViewController
{
varshouldHideHomeIndicator=fal
overridefuncprefersHomeIndicatorAutoHidden()->Bool
{
returnshouldHideHomeIndicator
}
overridefuncviewDidAppear(_animated:Bool)
{
dAppear(animated)
HideHomeIndicator=true
dsUpdateOfHomeIndicatorAutoHidden()
}
}
这是⼀个传递函数,因为它只是向UIKit发出信号,我们改变了先前选择的⽤于home指⽰键可见性的值。不过,与状态栏不同的是,⾃UIKit⾃⼰
隐藏它之后,这并没有技术上的动效。因此,像这样的代码没有效果:
overridefuncviewDidAppear(_animated:Bool)
{
dAppear(animated)
fter(deadline:.now()+1.0){
HideHomeIndicator=true
e(withDuration:1,animations:{
dsUpdateOfHomeIndicatorAutoHidden()
})
}
}
对
tNeedsUpdateOfHomeIndicatorAutoHidden()
发送⼀个简单的任务都将执⾏⼀个轻微的alpha渐变,这与它是否包含在动画区块中⽆关。
容器控制器
查看控制器的最后⼀个新增加功能是通知UIKit⼦视图控制器是否应该指⽰home指⽰键的可见性。如果你开发iOS⾜够长时间,你可能会利⽤容器
视图控制器来更好地促进抽象和封装模式。
overridefuncchildViewControllerForHomeIndicatorAutoHidden()->UIViewController?
{
returnmyChildController
}
这些控制器可能会发现⾃⼰靠近屏幕底部,如果是这样-你可能希望home指⽰键忽略你。⼀个简单的覆盖返回隐藏的实例或是正在执⾏的实例解
决了这个问题:
如果你确实指出⼦控制器应该指⽰其可见性,你也有责任重写以前讨论的函数:
classMyChildViewController:UIViewController
{
overridefuncprefersHomeIndicatorAutoHidden()->Bool
{
returntrue
}
}
该函数的特性是允许零返回值。如果是这种情况,那么UIKit将依靠当前的控制器作出决定-如果你选择不覆盖该函数,那么这个决定将是“显⽰
home指⽰键”。
这也可以是⼀个运⾏时决定,UIKit将再次要求你调⽤它的我们刚刚提及的函数来通知框架应该再次查询
prefersHomeIndicatorAutoHidden():
overridefuncchildViewControllerForHomeIndicatorAutoHidden()->UIViewController?
{
returnmyChildController
}
funcinitializeChildController()
{
myChildController=MyChildController()
dsUpdateOfHomeIndicatorAutoHidden()
}
.post{
padding:12px;
padding-left:constant(safe-area-int-left);
padding-right:constant(safe-area-int-right);
}
overridefuncpreferredScreenEdgesDeferringSystemGestures()->UIRectEdge{
}
总结:
iPhoneX注意事项:
对iOS⼯程师来说,它仅仅设计之后表现出的成就感,还是另⼀个视图控制器对修复和编码的考虑?也可能是两者的混合。如果时间在软件开发的
连续统⼀体中教会了我们什么,那就是时间流逝+⼀个⽣态系统=新的应⽤程序界⾯。在今天的智能⼿机领域,更现实的说法是,时间流逝+苹果的
⽣态系统=新的硬件=新的应⽤程序界⾯。
我们通过增加iPhone的⾼度成功适配了。我们通过不同的决议来推动进程。我们可以处理导航栏中的⼀个⼩相机配件,以及靠近底部挡板的2点线
条。
本文发布于:2023-03-13 05:38:31,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/1678657112234114.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:苹果隐藏功能.doc
本文 PDF 下载地址:苹果隐藏功能.pdf
留言与评论(共有 0 条评论) |