Tag: 导航

HUDWAY在CarPlay上运行

从3.7.6版开始,HUDWAY Go可以与CarPlay一起使用-使在车载内置显示屏上查看方向更加舒适。 如您现在所见,Apple最终在iOS 12中允许第三方导航应用程序开发人员在其应用程序中实现CarPlay支持。 CarPlay是用于车载内置显示器的多功能软件系统,可将iPhone从驾驶员手中移开,同时使它们保持与方向盘的连接(在Apple网站上了解有关CarPlay的更多信息)。 换句话说,它是因为在驾驶时不使用iPhone并使驾驶员专注于道路而设计的。 HUDWAY我们专注于实现相同目标的解决方案:最大限度地减少驾驶时对智能手机的干扰,从而为驾驶安全做出贡献。 难怪我们会立即抓住机会添加CarPlay支持! 现在,让我们看看它是如何工作的。 CarPlay仅适用于部分汽车。 所以首先,请确保您的人在其中。 汽车显示界面上应该有CarPlay徽标,或者方向盘上应该有语音助手按钮。 Apple提供了有关如何使用CarPlay设置iPhone的详细说明,着重指出可以通过无线方式或使用电缆连接 iPhone。 我们建议您在使用导航应用程序时选择有线连接。 请确保电缆是Apple的原装电缆 -否则传输的音频质量可能会较差。 将iPhone连接到Carplay之后,您会在其主屏幕中看到兼容应用程序列表HUDWAY Go。 您可以在iPhone或CarPlay上启动HUDWAY Go。 屏幕将并行工作,因此实际上您可以锁定iPhone并仅在CarPlay上控制应用程序。 在右侧,有地图控件:您可以拖动和缩放地图,或者快速将焦点重新对准当前位置。 点击搜索,然后选择适合您的选项。 如果您以前在iPhone上使用HUDWAY Go进行过搜索,那么它也可以在CarPlay上使用。 假设您需要从洛杉矶市中心到达洛杉矶国际机场。 选择类别,然后选择机场。 该应用程序将向您显示附近的所有机场。 选择所需的机场以创建路线。 如果所需的目的地没有出现在列表中(在这种情况下为附近的机场列表),请返回“搜索”屏幕并选择输入地址。 然后输入目的地-例如,洛杉矶机场,或仅输入其官方代码LAX。 然后点击找到的目的地以创建路线。 您的iPhone和CarPlay均可访问该路线。 还将显示路线持续时间和距离,预计到达时间(ETA)以及估计的油耗和成本。 如果有备用路由可用,请选择“备用路由”,然后在建议的路由之间切换以查看其详细信息: 确定要走的路线后,请点击绿色的“出发”按钮。 该应用程序将开始下载地图并准备就绪。 当您开始使用HUDWAY Go驾驶时,可以在iPhone和CarPlay上都遵循路线,但是CarPlay上会显示3D高对比度路线视图,而在iPhone上,您会看到详细的地图和行程信息: CarPlay的所有其他屏幕均根据Apple对支持CarPlay的应用程序的要求制成。 但是,我们将骑行过程中信息在智能手机和CarPlay上的显示方式分开了,因为我们特别设计的3D路线UI比详细地图更容易,更快捷地掌握。 因此,驾驶员只专注于最重要的事情,而将花费更少的时间将注意力从道路上移开。 在旅行期间,您可以点击汽车显示屏以查看旅行菜单,您可以在其中完成旅行或启用禁用语音提示。 完成旅行后,该应用程序将在智能手机上为您显示旅行统计信息。 然后,您也可以开始新的旅程,或以FreeRide模式行驶,无需设置目的地,但会看到附近的道路和街道名称。 希望您会喜欢在CarPlay上使用HUDWAY Go🙂我们欢迎您通过support@hudway.co提供反馈。 PS。 以下是下载适用于您的iPhone或Android设备的应用程序的链接。 基里尔·弗洛洛夫(Kirill Frolov) 软件架构师 胡德威

iOS开发课程:导航控制器

如何在单个导航堆栈中使用某些屏幕构建应用程序? 如何管理导航项? 让我们在快速指南中回答这些问题! 导航控制器是一种容器视图控制器,它在导航界面中管理一个或多个子视图控制器。 在这种类型的界面中,一次只能看到一个子视图控制器。 在视图控制器中选择一个项目会使用动画在屏幕上推送一个新的视图控制器,从而隐藏先前的视图控制器。 在界面顶部的导航栏中点按后退按钮可删除顶视图控制器,从而在下面显示视图控制器。 阅读有关Apple Developer的更多信息 创建一个新的Single View App项目。 热键:shift + Command + N 打开主板 如何将导航控制器添加到情节提要中? 只需按: Shift + Command + L 选择导航控制器并将其拖动到情节提要。 凉。 您的第一个导航控制器已在现场。 查看throw Attributes Inspector(在右侧)。 这是导航控制器属性。 *将导航控制器设置为初始视图控制器 (该控制器在程序启动时加载) 让我们向显示第二个控制器的第一个控制器添加按钮。 只需按: Shift + Command + L 选择“条形按钮项”并将其拖动到“视图控制器导航栏”。 设置标题。 打开连接检查器。 将动作从“触发的Segues”部分拖动到第二个View Controller,然后选择“显示”选项。 在模拟器上运行项目。 想要制作大标题功能吗? 只需在导航控制器中选择导航栏。 打开属性检查器 安装程序优先选择大标题 *对于将UITableView作为视图的View Controller(或视图的第一个子视图) 大导航标题将在滚动时自动过渡。 在模拟器上运行项目。 […]

带有滚动功能的React Native中的可折叠手风琴样式导航

我发现在React Native中找到一个好的,高性能,手风琴风格的导航组件有点困难,这不太复杂。 Oblador有一个相当不错的产品,但是它没有考虑滚动视图中的项目。 我希望能够做的是在用户设备的顶部设置适当的手风琴菜单项,并显示其子类别菜单项。 我在Expnent的Codepen式Snack应用程序中构建了它的精简版,并在此处将其作为开放源代码git repo的更全功能版本。 它是使用标准的react native入门指南构建的,因此您可以遵循这些指示来启动和运行项目。 该代码有很好的注释,但实际上它是由三个部分组成: scroll accordion ,其中包含包含subcategory links touts 。 当您单击某个功能区时,该功能区将滚动到用户设备的顶部,而不管他们在scrollView中的滚动位置如何,并在子类别链接列表中添加动画效果。 棘手的部分是尝试使代码保持动态,以便您的吹捧者可以是任意高度,并且子类别链接的数量可以随类别的不同而变化。 本示例尝试通过在必要时使用PureComponents来执行此操作,并且仅在初始布局上进行尺寸计算,以便在实际单击tout时,我们要做的就是随着子类别链接容器的动画高度和查看滚动。 如果单击另一个提示,我仍然需要实现自动关闭上一个子类别链接容器的功能。 除此之外,还有代码。 让我知道您是否有任何疑问或改进。 “使用严格” 从’react’导入React,{组件}; 从’react-native’导入{AppRegistry,Animated,Dimensions,Easing,Image,Text,View,StyleSheet,TouchableOpacity,ScrollView}; const categoryLinks = [//为简单起见,我们对所有tout使用相同的类别链接集 {标签:’Subcategory1′}, {标签:’Subcategory2′}, {标签:’Subcategory3′}, {标签:’Subcategory4′}, {标签:’Subcategory5′}, {标签:’Subcategory6′}, {标签:’Subcategory7′}, {标签:’Subcategory8′}, {标签:’Subcategory9′}, {标签:’Subcategory10′}, ] const categoryTouts = [// touts是保存我们链接的可点击图像项 {image:require(’./ assets / images / image01.jpg’),标题:“ Category1”,链接:categoryLinks}, {image:require(’./ assets / images […]

快速登录/注销导航过程

创建Login和Tab Bar VC之后,我们需要将一个Storyboard ID分别添加为“ loginvc”和“ tabbarvc” 登录VC 不使用用户和密码文本字段,并且登录操作将状态设置为true并调用updateRootVC静态函数。 稍后我将解释updateRootVC函数。 个人资料VC 概要文件vc是执行注销操作的位置。 AppDelegate和切换器 最后,AppDelegate在启动时将调用切换程序updateRootVC函数。 Switcher updateRootVC函数是进行分支的地方。 AppDelegate和切换器 完成了! 任何改进/建议都是最欢迎的!

ARKit和CoreLocation:第二部分

使用线性代数(和Trig)导航 示范代码 ARKit和CoreLocation:第一部分 ARKit和CoreLocation:第二部分 ARKit和CoreLocation:第三部分 数学和坐标之间的方位角计算 如果您没有机会, 请先 结帐 第一 部分 。 现在,我们需要弄清楚如何获得两个坐标之间的方位角(角度)。 找到轴承后,我们进行了旋转变换,以使节点朝向正确的方向。 定义 弧度: 弧度是一个角度度量单位,定义为使得一个弧度从单位圆的中心对向产生的弧长为1。弧度等于180 /π度,以便将弧度转换为度,乘以180 /π。 如果您有两个不同的纬度(地球上两个不同点的经度值),则借助Haversine公式 ,您可以轻松地计算大圆距离(球体表面上两点之间的最短距离)。 – 可动类型 sin =对立/斜边 cos =相邻/斜边 棕褐色=对面/相邻 atan2: 带两个参数的反正切或反正切函数。 棕褐色30 = 0.577 意思是:30度的切线为0.577 arctan 0.577 = 30 意思是:切线为0.577的角度为30度。 按键 “ R”是地球的半径 “ L”是 经度 θ是纬度 “ β ”轴承 ‘ ∆ ‘是增量/变化 通常,当您沿着大圆弧路径(正交运动)时,当前的前进方向会有所不同; 最终航向将与初始航向有所不同,具体取决于距离和纬度(如果要从例如35°N,45°E(≈巴格达)移至35°N,135°E(≈Osaka),将以60°的航向开始,并以120°的航向结束!)。 该公式适用于初始方位角(有时称为正向方位角),如果沿大圆弧沿直线直线移动,则将使您从起点到终点 […]

推送,弹出,呈现和关闭ViewController

最近,我发现自己处于模态呈现UINavigationController,然后将UIViewControllers推送到UINavigationController中的情况。 在最后一个UIViewController上,我有两种情况要处理:1)导航回到UINavigationController堆栈中的第一个UIViewController,以及2)关闭UINavigationController,包括UINavigationController堆栈中包含的所有推送的UIViewControllers。 经过一番尝试和错误,我决定花一些时间来了解UINavigationControllers和UIViewControllers处理导航的不同方式。 第一堂课: 必须以模态形式呈现的任何UIViewController(包括作为UINavigationControllers的UINavigationControllers的UINavigationControllers)都必须被取消 。 第二课: 由于UINavigationControllers将UIViewControllers保留在其堆栈中,因此它们既可以模态显示也可以通过推送呈现UIViewControllers。 从任何推入的UIViewController导航时,UINavigationControllers必须弹出 UIViewController。 第三课: 尽管可以模态地或通过推送来呈现UIViewControllers,但UIViewControllers只能呈现其他UIViewControllers。 因此,只能关闭UIViewControllers(除非它们位于UINavigationController堆栈中并且UINavigationController正在处理弹出消息-请参阅第2课)。 这就是为什么无法在UIViewController上调用popViewController的原因。 第四课: PresentingViewController 是Apple提供的属性,可在UIViewControllers和UINavigationControllers上使用。 调用presentingViewController.dismiss(animated:completion)将关闭parentViewController呈现的所有内容 。 parentViewController是呈现当前UIViewController的UIViewController。 因此,如果您的UINavigationController在其堆栈中具有3个UIViewControllers,则调用presentingViewController.dismiss(animated:completion)将同时关闭UINavigationController和保存在其堆栈中的3个UIViewControllers。 第五课: 同样,Apple还提供了UIViewControllers和UINavigationControllers的另一个属性( presentedViewController) 。 调用presentedViewController.dismiss(animated:completion)将关闭childViewController 。 childViewController是要显示的当前UIViewController。 在进行此最近的调查之前,我一直认为导航是相对基本的。 但是,当面对推入式和呈现式UIViewControllers的组合时,我意识到完全理解不同的导航模式是多么重要。 和往常一样,我希望这对您有所帮助,并且编码愉快!! 🙂