首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

架构之路 (五) —— VIPER架构模式(一)

开始 首先看下主要内容: 在本教程,您将了解如何在SwiftUI和Combine中使用VIPER体系结构模式,同时构建一个允许用户创建公路旅行的iOS应用程序,来自翻译。...VIPER每个字母代表体系结构的一个组件:视图、交互程序、演示程序、实体和路由器(View, Interactor, Presenter, Entity and Router)。...首先添加一个旅行标题: 在TripDetailInteractor添加以下属性: var tripName: String { trip.name } var tripNamePublisher:...使用presenter向列表添加新路径点的add按钮。 一个列表List,它使用ForEach与presenter每个路点创建一个单元格。...除非您希望将每个模块打包自己的framework,否则可以将模块概念化为组。

17.4K10
您找到你想要的搜索结果了吗?
是的
没有找到

iOS 9人机界面指南(四):UI元素(下)- 腾讯ISUX

4.3.2 添加联系人按钮 添加联系人按钮让用户将现有联系人添加到文本框或者其它文字视图中。 ? API注释 想要了解如何在代码定义添加联系人按钮,请参考UIButton....API注释 想要了解如何在代码定义添加日期时间选择器,请参考UIDatePicker....系统按钮: 默认状态下不含边界,也不含背景图 可以是图标或者文字标题 支持自定义样式,描边或者加背景图(想要自定义按钮外观,可以使用 UIButtonTypeCustom 类型的按钮,并且提供背景图片...但在某些特定的内容区域内,按钮描边或者添加背景颜色,让用户迅速地把注意力放到按钮上,也是必要的。Value 2的布局,文本和副标题中间的垂直间距会让用户专注于副标题的第一个单词。...你可以自定义一个文本框,帮助用户更好地理解如何使用它。举个例子,你可以在文本框的左侧或者右侧加入自定义图形,或者加入系统按钮,书签按钮等。

13.2K30

XcodeXcode 9 的全新功能您会喜欢的工具。内建 Interface BuilderXcode IDE

在 Markdown 文件标题、粗体、斜体文本、链接和其他格式将在您键入时同步显现在编辑器。...全新的源代码管理导航器凸显了我们对 Git 的支持:您可以快速浏览每个分支,标签及遥控提交更改的计划表;检查某一条目以查看所有受影响的文件,或双击某次提交以查看所有更改内容;创建和合并分支等常见操作也能在导航器快速访问...通过自定义添加代码段,只需键入少量字符即可插入那些频繁输入的代码。...自动布局基于这样一种概念:界面每个对象均可定义约束条件,用于控制其对父视图和其他界面控件的响应。例如,当显示不同语言时,可以让按钮优先保持特定大小或扩展以容纳更大的文本。...macOS 包含的其他工具 命令行工具 下载 macOS SDK,标题和构建工具 ( Apple LLVM 编译器和 Make)。

8.3K30

强大的高颜值iOS图表框架AAChartKit,支持柱状图、条形图、折线图、曲线图...

[AAChartKit-Live.gif] 特别说明 支持通过JavaScript 函数来自定义 AATooltip视图显示效果 有时系统默认的 tooltip 浮动提示框的显示效果无法满足使用者的特殊自定义要求...,此时可以通过添加 AATooltip 的 headerFormat 和 pointFormat字符串属性来自定义浮动提示框的显示内容,仍旧不能满足需求,更可以通过 AATooltip 的 formatter...#import "AAGlobalMacro.h" 在你的项目的 .pch 全局宏定义文件添加 正式开始使用 在你的ViewController视图控制器文件添加#import "AAChartKit.h...) .titleSet(@"编程语言热度")//设置图表标题 .subtitleSet(@"虚拟数据")//设置图表副标题 .categoriesSet(@[@"Java",@"Swift",@"Python...,并且将图表进行了手势放大之后,这时候如果想要左右滑动图表,可以使用 双指点按 屏幕的AAChartView视图区域进行 左右拖动 即可.同时屏幕的右上角会自动出现一个标题为 "恢复缩放" 的按钮,点击恢复缩放

5.1K11

【IOS开发基础系列】UIAlertController专题

版本和Objective-C版本不同,在swift,alertView的初始化只允许创建拥有一个取消按钮的对话框视图。...以前我们只能在默认视图、文本框视图、密码框视图、登录和密码输入框视图中选择,现在我们可以向对话框添加任意数目的UITextField对象,并且可以使用所有的UITextField特性。...Observer,我们通过在每个按钮动作的handler代码块(还有其他任何可能释放视图控制器的地方)添加合适的代码来实现它。...3 开发技巧 3.1 常见问题 3.1.1 集成键盘监听后,重复进入页面挂机问题         在项目中,由于自定义AlertView中有用到textfield,故AlertView添加了键盘显示隐藏的通知监听...具体表现是:在项目中,自定义AlertView实例的生命周期是在plugin管理的,plugin差不多是单例模式,故自定义AlertView实例不会轻易释放,只有下一次调用插件时,实例进行替换时才会将上一实例释放

43430

如何让 SwiftUI 的列表变得更加灵活

API 编写的,下面让我们尝试使用新功能来我们的列表实现自定义样式,并且使代码更加健壮。...元素绑定和自定义滑动操作 接下来,让我们看看如何将完全自定义的滑动操作添加到列表。...然后,让我们使用另一个新功能,集合元素绑定,让系统自动我们的 articles 数组每个元素创建一个可变绑定: struct ArticleList: View { @ObservedObject...由于每个 article 值在 ForEach 闭包中都是可变的,我们可以使用新的 swipeActions 修饰符来实现每个 NavigationLink 项目视图自定义滑动操作。...可定制的分隔符 自从引入 SwiftUI 以来,开发者们有一个非常普遍的要求,提供一个 API ,用于隐藏或以其他自定义实现列表每个 item 之间的默认分隔符。

4.8K41

Swift:静态工厂方法

同样,这是许多开发人员选择子类化并创建内置视图类的自定义变体的地方,就像这里的UILabel一样,我们将使用它来渲染标题: class TitleLabel: UILabel { override...尽管子类化是一项重要的语言功能,即使在面向协议的编程时代,也很容易将自定义设置与自定义行为混淆。我们并没有在上面的UILabel真正添加任何新行为,我们只是在设置一个实例。...此外,由于扩展名可以限制为单个文件(通过添加private关键字),因此我们可以轻松地需要创建特定视图的应用程序部分设置扩展名,只有一个功能即可: //我们只会在单个视图控制器中使用它,因此我们将范围设为私有...就像用于视图一样,工厂方法我们提供了非常干净的调用方式。...特别是如果与"Swift:将子视图控制器用作插件" 的便捷API的稍加修改版本结合使用,我们现在可以在执行异步操作时轻松添加预先配置的加载视图控制器: class ProductListViewController

2.4K10

iOS开发常用之 HUD 弹窗

WSProgressHUD - 一个小巧精致的HUD,支持添加自定义查看上,还有更多小细节.....PreLoader的实现讲解 Toast-Swift - 高可定制易用的Toast弹出信息或通知用户界面组件类。 对话框 WCAlertView - 自定义的对话框。...TAOverlay - TAOverlay可以通过叠加层展示有用的信息,可自定义文本和背景色,添加阴影和模糊效果,以及更改字体大小或者用户自定义图片替换页面的图标。...CustomPopOverView - 自定义弹出视图,内容支持传一组菜单标题,也支持自定义view,或者自定义viewController,支持任意按钮触发,会显示在按钮底部,也支持切换按钮的对齐方式...TBActionSheet.swift - 支持Carthage,可自定义度100%的ActionSheet,支持微信样式。

4.2K20

Swift-MVVM 简单演练(一)

---- 添加下拉刷新控件 在基类控制器定义下拉刷新控件,这样就不用每个子控制器页面单独设置了 给refreshControl添加监听方法,监听refreshControl的valueChange事件...在自定义访客视图HQVistorView布局各个子控件 懒加载控件 /// 图像视图 fileprivate lazy var iconImageView: UIImageView = UIImageView...到目前为止,虽然我们只是在基类控制器里面创建了访客视图setupVistorView,只有一个访客视图的HQVistorView,但是实际上当我们点击不同的子控制器的时候,每个子控制器都会创建一个访客视图...总结 使用代理传递消息是为了在控制器和视图之间解耦,让视图能够被多个控制器复用,TableView 但是,如果视图仅仅是为了封装代码,而从控制器剥离出来的,并且能够确认该视图不会被其它控制器引用,...则可以直接通过addTarget的方式视图中的按钮添加监听方法 这样做的代价是耦合度高,控制器和视图绑定在一起,但是省略部分冗余代码 ---- 调整未登录时导航按钮 如果单纯的在setupVistorView

10.2K51

应用程序内购买教程:入门

通过允许用户购买或解锁内容或功能,了解如何在此应用内购买教程增加应用收益。 ?...主视图控制器位于MasterViewController.swift。此类显示表视图,其中包含可用IAP列表。购买存储SKProduct对象数组。...应用内购买教程 您将无法使用您在此处看到的完全相同的应用程序名称,因为应用程序名称在App Store必须是唯一的。也许在上面屏幕截图中显示的示例标题之后添加您自己的首字母。...创建应用内购买产品 提供IAP时,您必须首先在App Store Connect每个单独的购买添加条目。如果您曾在商店列出待售的应用程序,那么这是一个类似的过程,包括选择购买的定价等级。...您可以添加一大堆不同类型的IAP: 消耗品:这些可以多次购买,可以用完。这些非常适合额外的生活,游戏内货币,临时加电等。 非消耗品:您购买一次的东西,并期望具有永久性,额外的水平和可解锁的内容。

5.4K20

优美整洁的引导页大神框架Onboard

内容页面由四个部分组成,一个图像/图标,标题,正文和操作按钮。...通过创建OnboardingContentViewController的实例创建单个页面,操作按钮提供标题,正文,图像,文本,以及在用户按下按钮时您想要执行的操作。...iconImageView,titleLabel,bodyLabel,和actionButton属性的字体,尺寸可自定义,而 pages引导页各个组件之间的间距也是可以自定义...自定义 模糊(Blurring),掩蔽(Masking)和淡入淡出(Fading) 默认情况下,您用于背景的图像将在其上应用蒙版,使其变暗一点。这是添加一点点对比度,所以文本可以更容易看到。...非引导页的最后一个视图控制器简单设置movesToNextViewController属性YES。

2K50

Swift key paths 的能力

自从swift刚开始就被设计是编译时安全和静态类型后,它就缺少了那种我么经常在运行时语言中的动态特性,比如Object-C, Ruby和JavaScript。...这周,就让我们来看看KeyPath是如何在Swift工作的,并且有哪些非常酷非常有用的事情可以让我们去做。 基础 key paths 基本上让我们将任何实例属性引用为单独的值。...延续使用之前的音乐主题,假设我们正在开发一个展示歌曲列表的App - 并且在UI这个列表配置UITableViewCell,我们使用如下的配置类型: struct SongCellConfigurator...在很多不同的代码,我们常常可以见到一些像下面的代码一样的列子 - 我们通过这段代码来加载一系列的事项,然后在ListViewController中去渲染它们,然后当加载操作完成后,我们会简单的将加载的事项赋值给视图控制器的属性...既然所有上面我们做的事情都是获取传递给我们闭包的值,并将它赋值给视图控制器的属性 - 那么如果我们真的能够将属性的setter作为函数传递,会不会很酷呢?

2.4K20

iOS 9人机界面指南(四):UI元素(上) - 腾讯ISUX

确保你自定义的导航栏在你的应用的每个视图中都拥有一致的外观与体验。举个例子,不要在同一个应用中使用不透明导航栏和半透明工具栏。...请注意,iOS本身提供了若干内置的服务,打印,转发到Twitter,发送信息和Airplay等等,你不需要再额外这些内置任务创建活动。...Value 2的布局,文本和副标题中间的垂直间距会让用户专注于副标题的第一 个单词。 ? 重要 以上四种单元格样式均支持添加表格视图元素,勾选或展开标志。...添加这些元素会缩小标题以及副标题单元格的可用宽度。 使用表格视图可以简洁而高效地展示少量或者大量信息。举例来说,你可以通过表格视图来: 展示用户可选的选项列表。...如果合适的话,删除按钮自定义一个名称。如果这能让用户更好地理解应用的相关功能的话,你可以创建一个合适的标题,来取代“删除”这个字样。 尽量使用简洁的文字标签,以避免被截断。

10.1K51

Swift key paths 的能力

前言 自从 swift 刚开始就被设计是编译时安全和静态类型后,它就缺少了那种我么经常在运行时语言中的动态特性,比如 Object-C, Ruby 和 JavaScript。...这周,就让我们来看看 KeyPath 是如何在 Swift 工作的,并且有哪些非常酷非常有用的事情可以让我们去做。 基础 key paths 基本上让我们将任何实例属性引用为单独的值。...延续使用之前的音乐主题,假设我们正在开发一个展示歌曲列表的 App - 并且在 UI 这个列表配置 UITableViewCell,我们使用如下的配置类型: struct SongCellConfigurator...在很多不同的代码,我们常常可以见到一些像下面的代码一样的列子 - 我们通过这段代码来加载一系列的事项,然后在 ListViewController 中去渲染它们,然后当加载操作完成后,我们会简单的将加载的事项赋值给视图控制器的属性...既然所有上面我们做的事情都是获取传递给我们闭包的值,并将它赋值给视图控制器的属性 - 那么如果我们真的能够将属性的 setter 作为函数传递,会不会很酷呢?

1.6K10
领券