自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 非管理员权限安装Xcode10

如果是公司的 Mac, 这个Mac 是 Managed 的,往往会没有管理员密码。这种情况下虽然可以安装 Xcode10,但启动 Xcode10时会要求你安装 Xcode10但命令行工具,这时会要求输入管理员密码。而如果不安装命令行工具,Xcode就无法启动。 这种情况下,需要使用以下步骤: 安...

2020-03-17 16:41:11 231 0

原创 MVVM 的 BehaviorRelay 和 Driver

BehaviorRelay 实际上是 Variable 的替代。概念上和 Variable 并无区别。而 Variable 是对 BehaviorSubject的封装,因此它可以不停地监听值的变化并发送事件。此外 Variable 会将当前值缓存值它的 value 属性中,你可以用 .value ...

2020-03-17 11:31:57 297 0

原创 创建自动布局约束(代码方式)

两种主要的自动布局约束创建方式(代码创建): addConstraints() scrollView.addSubview(statusButton) scrollView.addConstraints([ statusButton.topAnchor.constra...

2020-03-17 10:28:56 221 0

原创 Accessibility 通知

Accessibility提供了一系列的通知,可以完成一些特定的需求。比如: UIAccessibilityLayoutChangedNotification 可以坚挺这个通知,以获取Voice Over功能的开/关。 UIAccessibilityLayoutChangedNotifica...

2020-03-16 11:53:23 170 0

原创 3步实现iOS本地化(swift)

1. 导入 Localisation.swift 到项目 文件github下载地址:https://github.com/kmyhy/Localisation/tree/master/LocalizedSwift 2. 实现 LocalisationProtocol 新建扩展,实现 Localis...

2020-02-22 12:30:16 267 0

原创 iOS 的 Accessibility

自定义 UIView 的 Accessibility ID 自定义 UIView 的 subviews 的 Accessibility ID 默认是无效的。如果想让测试能够检索到 subviews 的 Accessibility ID,可以在 init 方法里: cancelButton....

2020-02-13 17:36:08 280 0

原创 iOS VIPER 架构解读

苹果官方推荐的 APP 架构是 MVC 架构,实际上它并不是传统的三层架构,而是两层架构,即整个 APP 由“模型”和“视图控制器”两层构成。因此视图控制器显得尤其重要,它的重要体现在两个方面: ViewController 是 iOS APP 中最重要的“基石”,没有 ViewControll...

2019-12-22 09:41:50 161 0

原创 RxSwift教程(1):Observable

概念 Observable 等同于 RAC 中的信号 RACSignal。它会发送 3 种事件: next completed error 事件 Event 是一种特殊的枚举,包含了上述 3 个值,其中 next 和 error 事件都会带一个参数,但 completed 事件没有参数: pu...

2019-12-22 09:40:46 125 0

原创 Swift UI(1)准备

Swift UI 需要什么 Xcode 11 以上 macOS Catalina 10.15 Xcode 11 以上没有什么可说的,这是应有之意。macOS 15(Catalina) 就有点奇怪了,为什么呢?因为只有在 macOS 15 上,你才可以使用 Swift UI 的 Preview ...

2019-12-22 09:39:43 254 0

原创 SSL证书失效导致无法上传问题

一日在项目中调试后台的文件上传接口不成功,返回 Error Domain=NSURLErrorDomain Code=-999 “cancelled” UserInfo…… 错误。 先以为是 mimeType 问题,尝试多次修改 mimeType 毫不奏效。后来想到会不会是后台使用的 SSL 证书...

2019-12-22 09:37:00 529 0

原创 MCCSframework 教程(七)子控制器嵌套

对于子控制器,我们并不陌生。在前面的教程中我们已经多次过它。今天,我们来详细介绍一下子控制器的嵌套,即子控制器嵌套子控制器。 子控制器嵌套 SubController 类有一个 children 属性: @property (strong, nonatomic) NSArray<SubCon...

2019-11-15 17:25:02 75 0

原创 新书推荐:iOS Swift 游戏开发指南

章节目录如下: 第 1 章 游戏的设计 … 9 1.1 设计游戏引擎 …9 1.2 创建基于继承的设计…10 1.3 创建基于组件的设计…12 1.4 用 GameplayKit 创建基于组件的游戏设计 … 16 1.5 计算屏幕的帧刷新时间 …18 1.6 进入和退出游戏 …19 1.7 用定时...

2019-11-06 13:56:14 289 0

原创 MCCSframework 教程(六)图片上传

在上一篇教程中,我们介绍了如何用 MCCSframework 调用 iPhone 的相机和相册,接下来我们将继续上一篇教程的工作,介绍如何将用户选中的图片上传到后台。 在 MCCSframework 中,上传不属于网络 API,而是封装成了单独的模块。 图片的上传比较复杂,除了网络操作外,我们同样...

2019-11-03 22:21:22 100 0

原创 iOS 10 中时区问题导致 DateTools 框架 weekday 方法计算不正确

某日发现 DateTools 的 weekday 方法在不同 iOS 上计算出的结果不一样的问题。具体表现为:在 iOS 10 上计算出的结果比 iOS 12 上的结果少一天。比如同样是 2019-09-23,iOS 10 上计算结果为 1,而 iOS 12 上计算结果为 2。 跟踪代码发现,we...

2019-11-03 22:20:13 125 0

原创 MCCSframework 教程(五)相机和相册

在上一篇教程中,我们演示了在 MCCSframework 中,如何构建复杂表单。今天,我们介绍如何使用 MCCSframework 的组件实现手机相册的浏览、选择和拍照。我们会继续上一篇教程中未完成的工作,最终效果如下图所示: 子控制器 新建一个子控制器 PhotoPickSC。在 PhotoP...

2019-10-23 16:15:40 191 0

原创 MCCSframework 教程(四)表单

除了极少部分纯展现的 APP,大部分 APP 都需要通过表单向用户搜集数据。MCCSframework 的表单符合 “MCCS” 的理念。主控制器(C)将表单界面托管给子控制器(S),子控制器通过 Cell 展现表单控件。子控制器将表单控件和模型(M)进行绑定,完成对用户输入数据的搜集。 接下来演...

2019-10-22 13:01:03 117 0

原创 MCCSframework教程(三): ScrollMenu

MCCSframework 除了提供 BaseVC、SubController、BaseController、NavBarVC 等核心类外,还提供了大量工具类、分类、宏和实用函数,在前面的教程中,我们已经使用过其中一些了。今天要介绍的是一个和 UI 相关的组件 ScrollMenu。 Scroll...

2019-10-15 16:36:41 166 0

原创 开发 flutter原生ios插件

安装 flutter 下载 flutter SDK,地址: https://flutter.dev/docs/get-started/install/macos 解压缩: unzip ~/Downloads/flutter_macos_v1.7.8+hotfix.4-stable.z...

2019-10-10 16:48:43 1526 0

原创 MCCSframework 教程(二)网络 API

在上一篇《MCCSframework 教程(一)介绍》中,我们介绍了一个“不那么复杂”的例子。在这个例子中,我们搜索商品时使用了 mock (模拟)数据。在真实项目中,这当然是不可能的。APP 的数据一般来自于网络,而MCCSframework 作为一个 APP 构建框架而不仅仅是 UI 框架,当...

2019-09-29 19:23:36 93 0

原创 如何在项目中引入 framework 源代码

我们需要在项目中以源代码的方式引入 framewwork,是方便我们对框架进行修改。当 framework 构建出来以后,可以通过 Cocoapods 或者 .a 文件的方式引入到我们的项目中。但是如果这个框架需要在项目中进行修改、升级或者定制的时候怎么办?如果只能打开框架工程修改、打包、发布,然...

2019-09-26 20:44:23 284 0

原创 MCCSframework 教程(一)介绍

MCCSframework 是什么 在上一篇介绍 MCCS:一种全新的 iOS APP 构建方式中,我们介绍了什么是 MCCS。MCCS 是一种设计模式,它的具体实现是 MCCSframework。 MCCSframework 当前只有 O-C 语言的版本,目前还没有 Swift 版本。 MCCS...

2019-09-16 15:51:35 218 0

原创 介绍 MCCS:一种全新的 iOS APP 构建方式

MCCS 是什么? MCCS 是一种新的 iOS APP 构建方式和设计模式。它是对 MVC 模式的扩展。其目的是为了解决 mvc 模式中控制器变得日益膨胀的问题。MCCS 会将复杂 UI 界面切分为多个更小的单元,并通过子控制器的方式对这些更小的单元进行管理。这里,主控制器主要负责管理这些子控制...

2019-09-02 16:30:47 360 0

翻译 SwiftUI 中的 Animation

原文:Animations in SwiftUI 26 Jun 2019 SwiftUI 创建了一种声明式的和简单明了的 UI 构建方式。我们介绍了 List、Form 组件和绑定。它们是的 SwiftUI 使用起来更简单和强大。今天,我们将介绍另一种 SwiftUI 特性:Animations...

2019-08-14 16:42:02 955 0

翻译 用SwiftUI构建表单

原文:Building forms with SwiftUI 19 Jun 2019 在苹果最新发布的 Xcode Beta 2 中更新了 SwiftUI。在 WWDC 大会中演示的这个版本包含了 Form 组件。今天我们就使用 SwiftUI 来构建一个表单类型的布局。我将演示一个真正的用 S...

2019-08-09 16:45:39 701 0

原创 从已有项目中抽取 framework

一般步骤 在现有项目中,新建 target,选择: Cocoa Touch Framework。mach-o type 设置为 Static Library(否则苹果商店审核不过)。 编辑 Podfile 文件为: source 'https://github.com/Co...

2019-08-09 09:26:42 428 0

原创 如何在 UISearchBar 中优雅地收起软键盘?

首先需要说明,第三方的键盘管理工具,IQKeyboardManager 无法应用到 UISearchBar 中。要让 IQKeyboardManager 能够应用到 UISearchBar 上,你需要修改 IQUIView+Hierarchy.m 的 - (void)isSearchBarText...

2019-08-02 13:30:27 575 0

翻译 理解SwiftUI的Property Wrapper

原文:Understanding Property Wrappers in SwiftUI 12 Jun 2019 上周,我们介绍了一系列关于 SwiftUI 框架的新帖子。今天,我将继续这个话题,介绍 SwiftUI 的属性包装器 Property Wrapper。SwiftUI 提供的属性包...

2019-07-24 22:25:51 1514 0

翻译 用 SwiftUI 编写真正的 app

原文:Making real-world app with SwiftUI 05 Jun 2019 在 WWDC 大会开始一个星期一来,大家纷纷为今年的 SwiftUI 、昏暗模式、可更新的 CoreML 模型兴奋不已。在接下来的一周,我将会逐一介绍这些新玩意。首先从 SwiftUI 开始吧。S...

2019-07-11 16:39:51 4557 0

原创 RAC 不是万能的

有句话说的好,“RP 不是万能的,没有 RP 却是万万不能的”。在 iOS 开发中,RP(响应式编程) 用得越来越多,其中我们最常用的响应式开发框架就是 ReactiveCocoa(俗称 RAC)。无可否认,RAC 的功能确实非常强大,可以用它完美替代 KVO、delegate、通知、UI 事件处...

2019-07-01 13:21:35 262 0

原创 信号量与并发控制

我们知道在网络请求时,会用到大量的异步线程。但异步线程的开辟并不是没有代价的,在硬件资源有限的情况下,有时候就需要对这些异步线程做一些控制,防止线程过多造成资源浪费;或者线程之间存在依赖关系,一个线程的执行必须等另外一个线程完成,而信号量(semaphore)就是 GCD 中用来做并发控制(即同步...

2019-07-01 13:20:23 376 0

原创 Activiti 7.1.7 系列(4)安装

由于国内防火墙的原因,正常方式安装 K8s 会一直显示Kubernetes is starting。 安装 Docker 下载地址:https://www.docker.com/get-started 配置 daemon 为 Docker daemon 为中国官方镜像加速 https://reg...

2019-06-06 19:30:47 1250 0

原创 Activiti 7.1.7 系列(3)请假流程

注册用户 请假流程涉及到 4 个用户:zangsan、lisi、wangwu、zhaoliu。 String[][] usersGroupsAndRoles = { {"zhangsan", "1", "ROLE_A...

2019-06-06 19:29:46 850 0

原创 Activiti 7.1.7 系列(2)核心库

下载示例代码 https://community.alfresco.com/external-link.jspa?url=https%3A%2F%2Fgithub.com%2Fgravitonian%2Factiviti7-api-basic-process maven 依赖 示例项目使用 7.0...

2019-06-06 19:28:50 1522 0

原创 Activiti 7.1.7 系列(1)升级至 7.1.7

Activiti 7.x 不需要升级至 JDK 11。用 1.8 就可以。 pom.xml 增加一个 property: 添加依赖: <dependencyManagement> <dependencies> <dependency> ...

2019-06-06 19:27:47 1924 2

原创 JBPM 7.17 学习笔记(12)编译 Kie Server 和 Business Central

相关概念 Kie Server Kie Server 是一个 Java web APP,允许你通过 REST/JMS 接口浏览规则和流程,并远程执行它们。 Kie Server 和 Workbench 的区别在于,Kie Server 主要负责远程执行规则和业务流程,它提供了用于查询、响应 htt...

2019-05-13 12:38:11 1529 0

原创 JBPM 7.17 学习笔记(11)动态部署

创建 kjar 项目 首先用以下命令创建 kjar 项目: mvn archetype:generate -B -DarchetypeGroupId=org.kie -DarchetypeArtifactId=kie-kjar-archetype -DarchetypeVersion=7.17.0...

2019-05-13 12:36:41 476 0

原创 JBPM 7.17 学习笔记(10)REST API

Kie Server 提供了 REST API,这些 API 是以 http://localhost:8080/kie-server/services/rest 开始的 API。 API 文档:https://www.jbpm.org/api-docs/kie-server/paths.html,...

2019-05-13 12:35:51 653 0

原创 JBPM 7.17 学习笔记(9)用spring boot+jbpm 实现请假流程

本文不使用 jBPM 的业务中心和执行服务器,只使用核心 API。 新建 spring-boot-web 项目 pom.xml 文件中添加如下依赖: <repositories> <repository> <id>jbo...

2019-05-13 12:34:39 4527 2

原创 JBPM 7.17 学习笔记(8)业务应用

创建业务应用 jBPM 支持生成 3 种类型的项目,分别是 data model、business assets、service。新建目录 business-application,执行命令: cd business-application mvn archetype:generate -B...

2019-04-05 14:21:52 723 0

原创 JBPM 7.17 学习笔记(7)连接mysql数据库

修改应用服务器配置文件,包括 4 个 standalone-*.xml 文件: <datasources> <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="Exa...

2019-04-05 14:21:00 536 0

提示
确定要删除当前文章?
取消 删除