swift
文章平均质量分 64
mo_xiao_mo
简单的生活
展开
-
Swift - 图片循环轮播组件的实现(附样例)
图片的无限循环轮播功能常常用在广告或者新闻展示上面,本文演示如何实现一个 iOS 系统下的图片轮播组件。1,组件功能介绍(1)每隔一段时间,轮播器就会自动滚动到下一张图片。如果当前是最后一张图片的话,则又滚动回第一张图片。这样无限循环下去。(2)在组件下方位置有页控制器(小圆点),显示图片数量和当前的位置。(3)除了自动轮播,我们还可以通过手动滑动组件来显示上一张,转载 2016-09-26 09:28:41 · 5962 阅读 · 0 评论 -
Swift - Framework的制作与使用教程2(引用第三方库
在我们创建的自定义框架中,也是可以再引用其它第三方的框架库。本文以实现一个网络定时请求的 framework 为例,其内部使用到了 Alamofire。关于 Alamofire 的详细介绍,可以参考我之前写的这篇文章:Swift - HTTP网络操作库Alamofire使用详解1(配置,以及数据请求)一、framework的制作(引用第三方库 )1,创建framework工程项转载 2016-11-11 13:56:10 · 1897 阅读 · 0 评论 -
判断两个日期是不是同一天的几种方法(swift3新增了一种方法)
1,格式化成字符串比较下面方法将两个日期格式化成只包含年月日的字符串,再比较两个字符串是否相等。12345678910//初始化日期格式器let dformatter = DateFormatter()dformatter.dateForm原创 2016-11-30 10:50:26 · 6958 阅读 · 0 评论 -
Swift - 调整UIScrollView的滑动速度(适用于tableView、collectionView)
当我们使用手指滑动滚动视图时(UIScrollView、UITableView、UICollectionView),抬起手指后,会发现视图还会保持惯性继续滚动一段距离。然后逐渐减速停下。如果觉得快速滑动过程中,滚动速度过快,一滑就溜出去很远。我们可以通过修改 decelerationRate 属性,来控制减速的速度。有两种方式来设置 decelerationRate 属性。1,使用系统定义原创 2016-11-30 10:54:05 · 6209 阅读 · 0 评论 -
Swift Protobuf 初探 —— 继 XML 后,JSON 也要被淘汰了吗
Protocol Buffers 是什么?Protocol buffers are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data – think XML, but smaller, faster, and simpler. —— Goog原创 2016-12-06 14:33:54 · 957 阅读 · 1 评论 -
Swift高手进阶 - 10个技巧
听说你已经学习Swift几个月了,有没有想更进一步成为Swift高手的想法?我这里有10招秘技,各位施主且听我慢慢道来,结个善缘。1. 扩展(Extension)任务: 求数字的平方。1234// 菜鸟版func square(x: Int) -> Int { return x * x }v原创 2016-12-06 14:37:40 · 618 阅读 · 0 评论 -
Swift - QQ讨论组头像的实现 (多人聊天的组合头像)
我们知道 QQ 里面的联系人头像是圆形的。当我们发起多人聊天时,会自动生成一个讨论组。这个讨论组的头像图标是由组内人员头像自动组合生成的。比如:组内有两个人,就用两个人的头像组合成讨论组的头像图标。有三个就是用三个头像来组成,以此类推。最多5个。本文演示如何实现这种组合头像的功能。1,讨论组头像组件效果图(1)根据初始化传入的图片数组中图片数量的不同(超过 5 张图转载 2016-12-07 09:25:24 · 3209 阅读 · 0 评论 -
swift-生成二维码(可带图片)
import UIKitclass ViewController: UIViewController { overridefunc viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically原创 2016-11-25 11:12:02 · 763 阅读 · 0 评论 -
Swift - 内联序列函数sequence介绍(附样例)
Swift 3 新增了两个全局函数:sequence(first: next:) 和 sequence(state: next:)。使用它们可以返回一个无限序列。我们可以给他们一个初始值,或者初始状态,然后他们便会以懒加载的方式应用到一个闭包。下面通过样例分别演示这两个函数如何使用。1,sequence(first: next:)介绍1转载 2016-10-08 09:47:00 · 3608 阅读 · 0 评论 -
Swift - Framework的制作与使用教程1(纯Swift实现)
在开发中我们常常会用到一些第三方 SDK 库,使用时只需将 framework 文件添加到项目中即可,十分方便。同样地,我们也可以创建自己的 framework 框架,用来封装一些常用的工具方法、框架类等。一来不会使源代码完全暴露在外,二来也便于代码复用。下面演示如何制作一个自定义的图片处理框架,用来实现 UIImage 的高斯模糊与马塞克化。效果图如下:一、fra转载 2016-11-10 09:49:25 · 4372 阅读 · 0 评论 -
Swift - 动画效果的实现方法总结(附样例)
在iOS中,实现动画有两种方法。一个是统一的animateWithDuration,另一个是组合出现的beginAnimations和commitAnimations。这三个方法都是类方法。一,使用animateWithDuration来实现动画(1)此方法共有5个参数:duration:动画从开始到结束的持续时间,单位是秒delay:动画开始前等待转载 2016-09-26 09:38:20 · 2501 阅读 · 0 评论 -
Swift - 使用ijkplayer框架播放直播视频1(RTMP/HTTP视频流播放)
BiliBili(简称B站),想必大家都不陌生。Ijkplayer 框架是B站提供了一个开源的流媒体解决方案,集成了 ffmpeg,还支持硬解码(需 iOS8 以上版本)。使用 Ijkplayer 框架我们可以很方便地实现视频直播功能(Http/RTMP/RTSP 这几种直播源都支持)。本文主要介绍如何使用 Ijkplayer 框架播放在线直播视频(当然其本地播放能力也很强大)。对于几种直转载 2016-09-26 17:34:12 · 1491 阅读 · 0 评论 -
Swift - 使用EventKit操作"提醒事项"(2、新增、修改、删除提醒)
1,添加提醒下面样例中,填写提醒内容、选择提醒时期后,点击“保存”即可将提醒添加到系统的“提醒事项”中。(这里我将日期输入框的 inputView 设置成 UIDatePicker,这样点击日期文本框的时候底部会自动出现日期选择器来选择时间。) 1234567转载 2016-09-26 17:35:50 · 1717 阅读 · 0 评论 -
Swift - 企业帐号进行IPA的打包、分发、下载安装的详细流程
1,企业帐号介绍(1)使用企业开发帐号,我们可以发布一个 ipa 放到网上,所有人(包括越狱及非越狱设备)都可以直接通过链接下载安装,而不需要通过 AppStore 下载,也不需要安装任何证书。(2)当然,使用企业帐号发布的 iOS 应用是不能提交到 AppStore 上的。而且企业级开发账号也比个人帐号更贵些(299刀/年)。(3)既然叫企业帐号,就说明是用来开发企业自己的内部应用,转载 2016-09-26 17:47:35 · 979 阅读 · 0 评论 -
Swift - Swift 3 新特性汇总(不同于以往版本的新变化)
之前 Apple 在 WWDC 上已将 Swift 3 整合进了 Xcode 8 beta 中,而本月苹果发布了 Swift 3 的正式版。这也是自 2015 年底Apple开源Swift之后,首个发布的主要版本(Swift 3.0),该版本实现了 Swift 演变过程中所讨论并通过的90多个提议。这里我对 Swift 3 的新特性、新变化进行一个总结。转载 2016-09-28 18:54:32 · 5102 阅读 · 0 评论 -
Swift仿淘宝App选择颜色分类弹出view效果
先来张图让小伙伴们看一眼, 是不是效果很不错.自制做效果图主要有四个View黑色 XtPopViewController的self.view的颜色白色 主控制器self.view颜色在白色View上方 有个透明度为0.5的view 进行遮挡. (maskView)下方的灰色View (popView1)不多说直接上代码let screen_Width = U原创 2016-11-07 14:26:29 · 1736 阅读 · 0 评论 -
使用CAShapeLayer来实现圆形图片加载动画
下面的GIF图片展示这个加载动画,它将一个圆形进度指示器和圆形渐现动画结合。这个组合的效果有趣,独一无二和有点迷人。这个教程将会教你如何使用Swift和Core Animatoin来重新创建这个效果。让我们开始吧!基础首先下载这个教程的启动项目,然后编译和运行。过一会之后,你应该看到一个简单的image显示:这个启动项目已经预先在恰当的位置将views和加载转载 2016-11-07 19:45:53 · 538 阅读 · 0 评论 -
swift-集成touch id功能 指纹验证
在这里写了一个指纹验证的类,公开了一个类方法来自定义输入提醒用户的内容,随时调用即可完成touch id验证功能1 新建一个类文件:fingerUnlock继承于NSObject就可以2 在这个文件中导入需要的系统框架 import LocalAuthentication3 直接粘代码就OK,下面这个方法是自己随便写的一个类方法 主要是为了输入提醒文字并验证class原创 2016-11-09 13:46:45 · 1511 阅读 · 0 评论 -
Swift - 实现日志输出的封装1(显示出调用的文件名、方法、行号)
在开发调试程序时,我们少不了使用 print 方法进行日志打印。当然简单地调试使用 print 方法就够了,但如果日志输出的地方很多,就不好区分出每条日志具体是在哪里打印的。本文对日志打印功能做个封装,自动实现日志信息的格式化。1,效果图从下图可以看出,控制台除了输出我们指定的日志内容外,还会自动记录日志触发点的文件名、函数名、行号。2,转载 2016-12-16 09:51:40 · 3003 阅读 · 0 评论 -
Swift - 如何连续dismiss 2个VC视图控制器(以及直接跳回根视图)
我们知道通过 present 和 dismiss 方法可以进行页面(ViewController)跳转。其中 present 是加载新的模态视图,而 dismiss 是退出当前视图,回到上一个视图。但有时我们并不想要一级一级地往回跳,比如需要跨级跳转,或者直接跳回到根页面上。下面通过样例分别进行演示。一、连续dissmiss两个视图比如下面样转载 2016-12-14 09:17:35 · 4401 阅读 · 0 评论 -
Swift - 第三方日历组件CVCalendar使用详解1(配置、基本用法)
CVCalendar 是一款超好用的第三方日历组件,不仅功能强大,而且可以方便地进行样式自定义。同时,CVCalendar 还提供月视图、周视图两种展示模式,我们可以根据需求自由选择使用。一、安装配置(1)从 GitHub 上下载最新的代码:https://github.com/Mozharovsky/CVCalendar(2)将下载下来的源码包中 CVCalendar.xcode转载 2017-01-03 09:32:58 · 4611 阅读 · 0 评论 -
Swift - 去除tableView在编辑模式下的自动缩进(单元格头部不留空白)
1,问题描述我们知道当表格 tableview 进入到编辑状态时,单元格内容会自动向右缩进,这样留出的空间可以用来显示新增或删除按钮图标。 如果我们只需要单元格拖动排序功能,而不要前面的图标,可以在 editingStyleForRowAt 委托方法中返回 none 即可。不过单元格的缩进仍然存在,左侧还是会有多余的空白区域。转载 2017-05-03 08:42:04 · 2679 阅读 · 0 评论 -
Swift - 计算次方(2的N次方,2的随机次方)
1,使用12var value = 1//2的4次方var value = 1Int(arc4random_uniform(5)) //2的0~4随机次方(包括0,4)原创 2017-05-26 15:01:45 · 5844 阅读 · 0 评论 -
iOS中文字体斜体效果
var testLabel = UILable(frame: CGRect(x: 100, y: 100, width: 200, height: 40))testLabel.backgroundColor = UIColor.cleartestLabel.text = "斜体"let matrix = CGAffineTransformMake(1, 0, tanf(-20 * (C原创 2017-06-01 11:46:02 · 1408 阅读 · 0 评论 -
Swift - 获取应用名称、应用版本、设备型号、系统版本等信息
有时我们在 App 中提交一些统计信息或者用户反馈信息时,为了能更好地进行分析,通常会附带上当前应用程序的名称、版本号、设备型号、以及设备系统版本。下面演示如何获取这些信息。1,效果图程序启动后自动获取相关的应用信息以及设备信息,并打印到控制台中。2,样例代码默认情况下我从 UIDevice 中获取设备型号时只能得到 iPhone原创 2017-06-02 09:13:43 · 10146 阅读 · 2 评论 -
Swift - 计算运动距离的功能实现(分别基于GPS、计步器)
一、基本介绍有时我们需要计算从 A 点移动到 B 点的距离,或者开发一个计算跑步公里数的 APP。即点击开始统计后,可以实时计算出跑过的路程长度。这个功能通常有两种实现方法:一种是基于 GPS 定位实现(使用 CoreLocation)、另一种基于计步器实现(使用 CMPedometer)1,二者的实现原理计步器实现:使用 CMPedometer 可以查询近 7转载 2017-08-17 14:14:24 · 3075 阅读 · 0 评论 -
Swift - 第三方Alert弹出框组件(SCLAlertView)使用详解
告警提示框(消息提示框)在 App 开发中肯定少不了,除了简单地用来显示提示信息外,有时也会作为一些具有交互功能的选择对话框、输入对话框。通常情况下,我们会使用 iOS 自带的 UIAlertController 组件来实现。虽然 UIAlertController 使用方便,但样式、功能都有限。本文介绍一个优秀的第三方 Alert 组件:SCLAlertView。一、安装配置转载 2017-08-17 14:16:53 · 3998 阅读 · 0 评论 -
Swift - UIStackView使用详解1(基本介绍、使用样例)
在应用开发中少不了界面元素的布局、适配、自适应。之前苹果已经为我们提供了 Auto Layout 和 Size Classes,方便我们实现页面的自适应弹性布局。但对于一些复杂的交互界面,用起来还是略显繁琐。到了 iOS9,苹果又为我们带来了一个新特性:Stack View(堆栈视图)。使用堆栈视图布局,在某些场景下可以大大减轻我们的工作量。一、基本介绍1,什么是 UI转载 2017-08-15 17:24:27 · 7903 阅读 · 0 评论 -
Swift - 高阶函数介绍(map、flatMap、filter、reduce)
Swift 提供了如下几个高阶函数:map、flatMap、filter、reduce。使用高阶函数进行函数式编程不仅可以简化我们的代码,而且当数据比较大的时候,高阶函数会比传统实现更快,因为它可以并行执行(如运行在多核上)。一、map 函数1,方法介绍map 方法获取一个闭包表达式作为其唯一参数。 数组中的每一个元素调用一次该闭包函数,并返回该元素所映射的值。简单转载 2017-11-02 14:39:01 · 4008 阅读 · 2 评论 -
Swift - 字符串的替换与过滤(附:过滤emoji表情符号)
开发中常常会遇到需要将 String 字符串中的特殊符号给过滤掉,或者将某些子字符串替换成其他的内容,下面通过样例进行演示。一、字符串替换1,简单的替换下面将字符串中所有的 com 替换成 COM。1234567//原始字符串let str1 =转载 2017-04-17 09:52:33 · 11766 阅读 · 0 评论 -
Swift - 去除字符串前后的空白(trim方法)
大多数编程语言都提供了 trim 方法来除去字符串前后多余的空白,Swift 中也提供了类似的方法:trimmingCharacters,这个方法除了可以清除前端或后端多余的空白,还可以清除其他指定的字符。 1,删除前后多余的空格(1)样例代码12345678//原始字符串转载 2017-04-17 09:51:37 · 9919 阅读 · 0 评论 -
Swift - 去处图片的白色、黑色背景(使UIImage背景透明)
1,效果图(1)点击“白底原图”“黑底原图”按钮可以切换显示白底或黑底的图片。(2)点击“抠图”按钮后,将当前选择的图片的背景变成透明,并显示在 imageView 上。这里为了看出处理后的图片与原图的区别,我将 imageView 的背景色设为淡蓝色。(3)点击“抠图并合成”按钮后,除了将原图的白色或黑色背景去处外,还会将处理后的图片与另一张图片进行合并显示。转载 2016-12-28 17:46:52 · 5241 阅读 · 0 评论 -
Swift - 在TableViewCell中获取父TableView(附:获取任意类型的父View)
一、在TableViewCell里获取对应的TableView有时我们需要在自定义的单元格(tableViewCell)中获取其所在的表格(tableView)对象。除了可以从外部把 tableView 传入到 cell 中去外,还可以通过循环遍历 cell 的 superview 来得到其所在的父 tableView。1,扩展UITableViewCell为方便使用,这里对 UI转载 2016-12-28 17:49:11 · 4047 阅读 · 0 评论 -
Swift - 设置UILabel、UITextView的文字行间距
有时我们需要调整 label 或 textView 的文本行间距大小,但这两个组件都没有相关属性可以直接设置。这个就需要借助富文本(NSAttributedString)来实现。一、设置UILabel的行间距1,效果图左侧是默认的行间距,右侧是将行间距修改成 20。 2,样例代码12转载 2017-03-09 09:13:46 · 5005 阅读 · 0 评论 -
Swift - 判断是否有某功能访问权限,没有则提示,并自动跳转到设置页
由于 iOS 系统的安全限制,App 如果需要访问设备的通讯录、麦克风、 相册、 相机、地理位置等时,需要请求用户是否允许访问。 有时用户不小心点了“不允许”,后面可能就不知道要去哪里再开启这个权限了。这就要求我们应用在每次调用相关功能的时候先获取相关的授权状态,如果还没授权则弹出授权申请的提示框。如果之前被拒绝了,则弹出相关提示框让用户很方便地自动跳转到设置页面去转载 2017-03-09 09:15:25 · 3104 阅读 · 0 评论 -
Swift - 通用链接(Universal Links)的使用详解(链接打开app)
一、通用链接介绍通用链接(Universal Links)是 iOS9 推出的一项功能。如果我们的应用支持通用链接,那么就能够方便的通过传统的 HTTP 链接来启动 APP(只要设备上已经安装了这个 App,不需要额外做任何判断),或者打开网页(如果 iOS 设备上没有安装该 App)1,通用链接与URL Scheme的区别(1)URL Scheme 使用介绍在 iOS转载 2017-03-09 09:17:38 · 11315 阅读 · 1 评论 -
Swift - SQLite中Data类型数据的插入、读取(BLOB类型字段)
我原来写一过一篇文章介绍如何使用第三方的 SQLiteBD 库来操作 SQLite 数据库(点击查看)。当时存取的都是一些数字、字符串这样的基本数据类型,有网友问如果想存个图片进去应该怎么做。本文演示如何实现 Data 类型的数据存取。1,实现原理(1)首先我们建表的时候,用于保存 Data 数据的字段要使用大数据类型,比如:BLOB(二进制数据)(2)读取操作同其转载 2017-03-09 09:18:54 · 5360 阅读 · 0 评论 -
Swift - 监听照片库里的变化(自动获取最新添加的图片)
当我们使用微信时会发现它有个预判“你可能要发送的照片”的功能,具体操作步骤如下:先打开微信进行聊天,然后将微信退到后台。接着进行一些拍照或者截图操作。再回到微信中,点击输入框旁边的加号发送附件。微信便会自动提示是否需要发送刚刚新增的那张照片,并显示照片的缩略图。(如果刚才新增了多张,则显示最后添加的那张。)1,实现原理要实现这个功能其实很简单 ,就是程序启动转载 2017-03-20 10:39:22 · 1660 阅读 · 0 评论 -
Swift - 自定义UIAlertController的样式1(修改标题、按钮的字体和颜色)
自 iOS8 起,苹果把 UIActionSheet 和 UIAlertView 合并为了 UIAlertController。UIAlertController 的用法我之前也写过相关文章:Swift - 告警提示框(UIAlertController)的用法。其默认样式如下:有网友问这个 UIAlertController 默认的样式能不能修改。虽然 UIAlert转载 2017-04-21 09:21:37 · 8953 阅读 · 1 评论 -
Swift - zip函数使用详解(附样例)
本文主要来讲讲 Swift 中提供的 zip 这个函数。这个 zip 函数可不是用来压缩文件的,其作用是将两个序列的元素,一一对应合并生成一个新序列。 该函数一般不会单独使用,而是会和其它的方法配合使用。下面我通过几个样例来演示它的用法。1,将两个数组合并成一个新的元组数组(1)下面代码我们使用 zip 结合 map 来合并生成新数组。注意:zip 函数生成的转载 2017-11-02 14:42:58 · 3487 阅读 · 1 评论