[返回] [最新] [最热门] [最高评价]

使用 Photos.framework 来批量删除 iOS 照片

最近有个需求,就是把 iPad Pro 上的照片全部清空。我既不想用手动删除的方式,也不想用导入到电脑然后再删除的方式,于是想用写代码的方式来解决问题这个问题。经过初步了解,可以使用 Photos.framework 来解决这个问题,这里是一些基本使用概括:

PHFetchOptions 用于描述需要获取的 Asset 的类型、数量、排序规则和查询条件;

调用 PHAsset.fetchAss
...

图拉鼎 2018-01-17 11:50 | 查看: 239

iOS: UITextView 如何取得光标(Caret)当前位置

拿到光标的位置可以做很多事,比如在弹起键盘的时候,如果光标被盖住了,则滚动到光标所在位置,这里需要有三个步骤来达到:

通过 selectedTextRange 得到当前 UITextView 选中的文字的范围,如果没选中文字,则会代表光标(Caret)当前的位置,如果该值为 nil,说明即没有选中文字,也没有光标(可能内容为空);

得到 selectedTextRange 的位置以后,就可以调
...

图拉鼎 2018-01-11 22:00 | 查看: 162

CSS: 跨平台 CSS 中文字体解决方案

今天有个微博网友报告了我们 Fireball Studio 的网页的中文显示问题,直觉告诉我,我们遇到了 CSS 中文显示在其他语言环境下的显示问题。一问果然如此,该网友是在 macOS 系统下使用日文语言的。

之前 Fireball Studio 的主页 CSS 的 font-family 写得确实有点简单,没有考虑到不同语种下的中文语言显示情况。于是我简单地去修复了一下,现在不仅可以在日本语
...

图拉鼎 2018-01-13 22:50 | 查看: 207

iOS 11 下如何为不同 UIViewController 设置开关 LargeTitles

iOS 11 为 UINavigationController 引入了一个 LargeTitles 的效果,可以通过在 UINavigationController 上设置 prefersLargeTitles = true 的形式开启。那么如何设置只为其中一个 UIViewController 开启大标题效果,而为其他的 UIViewController 关闭大标题效果呢?

很简单,只要记住,
...

图拉鼎 2018-01-13 23:23 | 查看: 231

Fastlane 在多 Workspace 的环境下指定 Workspace

Fastlane 是来做自动集成部署的非常方便的一个工具,默认情况下它就能工作的很好,除此之外它有很多选项可以配置和使用。今天讲一个多 Workspace 环境下的配置工作。

如果你的项目非常复杂,比如同时对 macOS 和 iOS 进行了支持,或者有多个 Workspace,那么在执行 fastlane 时,fastlane 可能会提示想要针对哪个 Workspace 进行编译——因为每个 W
...

图拉鼎 2018-01-15 11:17 | 查看: 315

为 Ubuntu Server 配置自动发邮件警报的 Monit

前几天奇点的服务器因为 CPU 100% 而被限频了,导致最近服务器的响应非常慢。我一直没有在服务器上做一些最基本的监控服务「比如连续多久 CPU 使用过 95% 就发一封警报邮件」之类的,这次事件让我决定做起这件事情。

我采用的是 Monit 这个开源工具,结合 Mailgun 邮件发送服务。下面就是一份最基础的安装+配置向导。

图为过去一周我的 Server 的 CPU 占用:为何是 25
...

图拉鼎 2018-01-06 21:28 | 查看: 415

记一则 macOS App 开发糟糕的向后兼容问题

2017 年 12 月 29 日,我悄悄发布了 Manico 2.4 版本,这个版本迁移到了 Swift 4.0,增加了一些小选项,总之是一个维护版本。因为是一个维护版本,所以我也没有多测试,就这样发布了,没想到升级至 Swift 过程中遇到了一个影响旧功能的问题,于是我要批评一下 Apple 的「向后兼容」问题。

Manico 2.4 的升级过程

Manico 2.4 从 Swift 3 升
...

图拉鼎 2018-01-05 17:34 | 查看: 315

谈谈 Apple 的「审核玄学」

这是我在经历了又一次长时间审核未果的情况下,决定对 Apple 的审核问题进行一次全面讨论和批判。

我在这 12月 5 日提交审核了奇点的一个 Bug 修复版本,5 天后没有任何反应,正好在这期间又修了一些 Bug,于是我打回重新提交了一个版本。本以为打回重新提交就会很快了,哪知又 10 天过去了,依然没有任何反应(一直在等待审核中)。百般无奈下,长痛不如短痛,我在昨天尝试了「加急审核」,果然,
...

图拉鼎 2017-12-20 09:43 | 查看: 355

Django REST 如何为文件属性输出完整 URL

我的 App 项目的 API 部分是使用 Django REST Framework 来搭建的,它可以像搭积木一样非常方便地搭出 API,兼具方便和灵活。在使用的过程中我也积累了一些小技巧,这里写一则关于如何为文件属性输出完整 URL 的字段。

一个典型的案例是,当请求 /profile/ 这个 API 的时候,返回类似于这样的结果:

{
"id": 1,
...

图拉鼎 2017-12-17 15:59 | 查看: 316

Ubuntu 16.04 安装 Docker CE

每次安装 Docker 都要去 Google 搜索,为了方便以后的自己,现在写在 Blog 里面。本文的核心内容提取自《

Get Docker CE for Ubuntu

》。

第一步:安装必要工具(可省略)

sudo apt-get install \
apt-transport-https \
ca-certificates \
...

图拉鼎 2017-12-15 13:36 | 查看: 395

iPhone X 下关闭 UIScrollView 自动调整 ContentInset

项目开发了三分之一,才想到在 iPhone X 上去跑一跑,一跑吓一跳,各种 UI 上的布局错误。本着尽快将问题消灭在萌芽阶段,于是接下去决定使用 iPhone X 作为默认模拟器去开发。本篇介绍修复一则非常常见的,即 UIScrollView 的 ContentInset 不对的问题。

问题是这样的

App 在 iPhone X 上模拟器打开,中间空了一大块(不重要的部分已经打码),这是怎么
...

图拉鼎 2017-10-19 22:30 | 查看: 630

使用 RxTest 来建立基于 RxSwift 的自动化测试

最近开始一个 iOS 新项目,我开始完全用 RxSwift 来构建所有逻辑了。本篇文章将讲述如何通过 RxTest 来架设起一个「响应式」的自动化测试环境。

我学习和使用 Rx 的经历

RxSwift(或 Reactive 响应式编程),我了解还算早,但是一直没有全面地采用它。一方面有项目的原因,经典项目因为忙着加 Feature,牵扯的地方比较多,所以只会谨慎局部使用,采用不多,比如奇点,只
...

图拉鼎 2017-09-22 21:47 | 查看: 566

...更多...