[TOC]
本文最早发布于 小专栏
利用无人机对一片区域进行测绘前,我们会先在地图上框选一个区域,然后再规划飞行的路线,而需要测绘的这片区域往往是一个多边形。在 Mesh iOS 即将推出的新版本中,我们加入了多边形区域的编辑功能,其中就涉及判断用户所编辑出来的多边形是否合法的问题。
首先我们要确定一个标准:怎么样才算一个不合法的多边形 ?我们可以简单地通过下面这幅图来解释一下:
我们可以看出前面两个分别是凹多边形和凸多边形,而最后一张则是我们所说的不合法多边形,可以看出这个不合法的多边形的特征就是:它存在某条边与另外一条边相交的情况 。
那么要判断一个多边形是否合法,我们只要判断...
[TOC]
本文针对网上一些关于泛型的知识点进行汇总和总结,已在文中标记出参考文章的链接
泛型是程序设计语言的一种特性。允许程序员在强类型程序设计语言中编写代码时定义一些可变部分,那些部分在使用前必须作出指明。
Objective-C 缺乏一个重要特性:不支持泛型。幸运地是,Swift拥有这一特性。==泛型允许你声明的函数、类以及结构体支持不同的数据类型==。
泛型代码可以让你写出根据自我需求定义、适用于任何类型的,灵活且可重用的函数和类型。它的可以让你避免重复的代码,用一种清晰和抽象的方式来表达代码的意图。
泛型是 Swift 强大特征中的其中一个,许多 Swift 标准库是通过...
由来最近 ImageGotcha 收到了第一封用户反馈的邮件。这个用户希望可以有 Dark Mode。ImageGotcha 只是一个工具类 App ,好像也没有什么必要加上这个黑夜模式,不过我还是去想了想如何给应用加上黑夜模式,或者说加上一个换肤的功能。
基本的思路就是 post 一个自定义的 NSNotification,然后在需要修改颜色的地方监听这个通知然后进行修改。按照惯例,我还是去 Github 上搜搜,看看别人是怎么做的。然后发现一部分人的做法是给现有的 UIKit 控件添加扩展属性,然后可以在定义这些控件的时候指定不同模式下的颜色,这的确是一种好方法。那么是如何在 Swi...
上架了个小工具。ImageGotcha 是一个 Safari 的 Action Extension,它可以提取当前网页的图片方便查看和批量保存,比如可以去某些 Instagram 用户的主页批量下载图片,或者下载 Bing 的每日背景图等等。点击 这里 到 AppStore 查看。
ImageGotcha 也做了国际化,支持英文、简体中文、繁体中文、日语以及韩语。要想使用ImageGotcha,需先在 Safari 开启这个Extension,App 内有操作指导,如下图是各种语言的指导说明:
这是演示如何启动 ImageGotcha 的 Action Extension:
这是...
[TOC]
SVN 项目结构首先,一般 SVN 项目有如下的结构:
trunk:项目主干
branches:开发或者 Bug 分支
tags:发布的版本
比如说我们已经写好了一个 CocoaPods 的库,它的名字是 xxxKit,那么它应该在看起来是这样的:
建立 CocoaPods 库我们在 trunk 的目录下执行
pod lib create xxxKit
按照提示输入后,在该目录下就会利用 CocoaPods 的模板生成了一个项目。我们主要关注xxxKit.podspec 这个文件。
修改 xxxKit.podspec,比如:
123456789Pod::Spec...
需求分析
在打包应用之后,需要自增 Version 的最后一位 和 Build 的值。
只在 Archive(Release) 的时候触发该自增。
添加 RunScript在 项目Target -> Build Phases -> 点击+号 -> New Run Script Phase
然后添加如下内容:1234567891011121314151617181920if [ $CONFIGURATION == Release ]; thenecho "当前为 Release Configuration,开始自增 Build"plist=${INFOPLI...
不知道大家在使用 Mac 的时候有没有这样的需求:
经常需要获取当前文件或者文件夹的路径,并且复制到粘贴板。
对于我来说经常有这种需要,然后我就从网上再结合自己的经验,找了好几种方法:
右键-选择「显示简介」,然后在弹出的窗口里直接用鼠标拖动复制「位 置」里的路径。
缺点:麻烦。
把文件拖到浏览器,在浏览器地址栏复制路径。
缺点:麻烦。
打开终端,把文件拖入终端,终端会把文件路径打印出来,然后复制。
缺点:麻烦。
打开终端,cd到目标目录,然后输入 「pwd|pbcopy」就可以把路径复制到粘贴板。
缺点:麻烦。
选择...
问题现状平时我们使用UIImage,UIFont,UIColor会遇到很多String-based的接口方法,比如常用的UIImage:1let testImage = UIImage(named: "test")
对于上面的代码,如果我们把 test 拼写错了,Xcode 并不会给出提示,只有当我们运行的时候才会收到报错,这样维护起来是有一定成本的。
代码解决我们可以用类似如下的代码来解决这个问题:1234567891011121314151617181920212223242526import UIKit.UIImagestruct ImageAssets { fi...
Github: SplashAnimate
准备工作:首先我们需要确定作为宣传的图片的宽高比,这个一般是与 UI 确定的。一般启动屏展示会有上下两部分,上面是宣传图片,下面是 App 的 Logo。
实现基本思路:在 LaunchScreen 结束后,在 AppDelegate 中将 rootViewController 指向展示广告用的 AdViewController,在AdViewController 中设置一段时间后自己销毁,并提供回调方法在 AppDelegate 中将 rootViewController 指向 App 真正的首页。
实现细节:新建一个 AdViewCo...
想建立一个元组的数组,来简单存放构建 TabViewController 的信息首先我的做法是1234567let homeTab = (vc: VYHomeViewController(), title: "Home", image: "home_gray", selectedImage: "home_blue")let infoTab = (vc: VYInformationViewController(), title: "Info", image: "home_gray", selectedImage: "home_blue")let marketTab = (vc: VYMar...