18 颐和园

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 132

非管理员权限安装Xcode10

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

2020-03-17 16:41:11

MVVM 的 BehaviorRelay 和 Driver

BehaviorRelay 实际上是 Variable 的替代。概念上和 Variable 并无区别。而 Variable 是对 BehaviorSubject的封装,因此它可以不停地监听值的变化并发送事件。此外 Variable 会将当前值缓存值它的 value 属性中,你可以用 .value 的方式读取 Variable 的当前值,通过 accept() 方法修改当前值。Driver 是一种...

2020-03-17 11:31:57

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

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

2020-03-17 10:28:56

Accessibility 通知

Accessibility提供了一系列的通知,可以完成一些特定的需求。比如:UIAccessibilityLayoutChangedNotification可以坚挺这个通知,以获取Voice Over功能的开/关。UIAccessibilityLayoutChangedNotification可以主动发送这个通知,将VoiceOver焦点移动到元素:UIAccessibility...

2020-03-16 11:53:23

3步实现iOS本地化(swift)

1. 导入 Localisation.swift 到项目文件github下载地址:https://github.com/kmyhy/Localisation/tree/master/LocalizedSwift2. 实现 LocalisationProtocol新建扩展,实现 LocalisationProtocol协议,比如:extension Localisation { st...

2020-02-22 12:30:16

iOS 的 Accessibility

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

2020-02-13 17:36:08

iOS VIPER 架构解读

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

2019-12-22 09:41:50

RxSwift教程(1):Observable

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

2019-12-22 09:40:46

Swift UI(1)准备

Swift UI 需要什么Xcode 11 以上macOS Catalina 10.15Xcode 11 以上没有什么可说的,这是应有之意。macOS 15(Catalina) 就有点奇怪了,为什么呢?因为只有在 macOS 15 上,你才可以使用 Swift UI 的 Preview 预览功能。如果是 macOS 14,Xcode 的 Canvas 窗口会提示“SwiftUI prev...

2019-12-22 09:39:43

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

一日在项目中调试后台的文件上传接口不成功,返回 Error Domain=NSURLErrorDomain Code=-999 “cancelled” UserInfo…… 错误。先以为是 mimeType 问题,尝试多次修改 mimeType 毫不奏效。后来想到会不会是后台使用的 SSL 证书问题?之所以这些想,是因为之前在 Postman 中调接口时发现,必须在设置中关闭 SSL 证书校验...

2019-12-22 09:37:00

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

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

2019-11-15 17:24:59

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

章节目录如下:第 1 章 游戏的设计 … 91.1 设计游戏引擎 …91.2 创建基于继承的设计…101.3 创建基于组件的设计…121.4 用 GameplayKit 创建基于组件的游戏设计 … 161.5 计算屏幕的帧刷新时间 …181.6 进入和退出游戏 …191.7 用定时器进行游戏的刷新…221.8 每帧刷新…231.9 游戏暂停…241.10 记录游戏时间 …25...

2019-11-06 13:42:24

MCCSframework 教程(六)图片上传

在上一篇教程中,我们介绍了如何用 MCCSframework 调用 iPhone 的相机和相册,接下来我们将继续上一篇教程的工作,介绍如何将用户选中的图片上传到后台。在 MCCSframework 中,上传不属于网络 API,而是封装成了单独的模块。图片的上传比较复杂,除了网络操作外,我们同样需要一些 UI 来展示用户上传成功了的图片,因此它也涉及了模型、cell 和子控制器。让我们首先从模型...

2019-11-03 22:21:13

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

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

2019-11-03 22:19:51

MCCSframework 教程(五)相机和相册

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

2019-10-23 16:15:34

MCCSframework 教程(四)表单

除了极少部分纯展现的 APP,大部分 APP 都需要通过表单向用户搜集数据。MCCSframework 的表单符合 “MCCS” 的理念。主控制器(C)将表单界面托管给子控制器(S),子控制器通过 Cell 展现表单控件。子控制器将表单控件和模型(M)进行绑定,完成对用户输入数据的搜集。接下来演示一个 APP 表单的例子。在这个例子中包含了键盘输入、日期选择、拍照/图片上传、下拉列表、true/...

2019-10-22 13:01:02

MCCSframework教程(三): ScrollMenu

MCCSframework 除了提供 BaseVC、SubController、BaseController、NavBarVC 等核心类外,还提供了大量工具类、分类、宏和实用函数,在前面的教程中,我们已经使用过其中一些了。今天要介绍的是一个和 UI 相关的组件 ScrollMenu。ScrollMenu 有点像 TabBar,允许用户通过点击按钮在多个 ViewController 之间切换,并...

2019-10-15 16:36:41

开发 flutter原生ios插件

安装 flutter下载 flutter SDK,地址: https://flutter.dev/docs/get-started/install/macos解压缩: unzip ~/Downloads/flutter_macos_v1.7.8+hotfix.4-stable.zip添加路径到 path 变量: open -e .bash_profile在 .bas...

2019-10-10 16:48:24

MCCSframework 教程(二)网络 API

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

2019-09-29 19:23:07

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

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

2019-09-26 20:44:03

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。