Swift
赫凯
人生如逆旅,我亦是行人。
展开
-
IOS 波波波波波波最浪的波
手机上的波浪效果,原理就是用一个定时器来刷屏,每刷一次就让屏幕上的线条就变一次,让其跟着时间来绘制自己的轨迹。波浪肯定是个周期,周期的话最容易想到的是sin,cos。0°~360°为一个周期,圆嘛,定一个变量从0开始一直到360,然后一直轮回周期有了还需要一个函数来绘制它的轨迹。轨迹的话也就是画曲线了,随着时间(就是咱们的那个周期)变而变。原理基本就是这样,我们想着如何去实现。首先原创 2016-12-19 21:42:06 · 19951 阅读 · 0 评论 -
Swift 最大子数组
用递归吧,分治策略,求最大子数组//: Playground - noun: a place where people can playimport UIKitvar str = "Hello, playground"var A = [13,-3,-25,20,-3,-16,-23,18,20,-7,12,-5,-22,15,-4,7]for i in 0..<A.count {原创 2016-11-28 23:11:01 · 540 阅读 · 0 评论 -
Swift 几种排序实现
import UIKitvar str = "Hello, playground"var arry = [12,32,12,43,54,23,54,2,1,65,2,123,3]//插入排序for index in 1..<arry.count { var key = arry[index] var i = index - 1 while (i >= 0 &&原创 2016-11-24 20:49:12 · 755 阅读 · 0 评论 -
(Swift 实现)二叉堆 —— 创建,增加节点,摘除最大节点
二叉堆其实也就是完全二叉树或者近似完全的二叉树,百科里面讲的是一般用数组来存储,完全二叉树嘛,子节点都是平均分的,不存在一枝特别突兀,这样就可以用数组了,比如父节点是n那子节点就是n/2和n/2+1,所以对给定一个数组,把里面的数字添加到二叉堆里还是稍微的有些容易 直接上代码import UIKitvar str = "二叉堆"var a = [96,79,8,7,67,16,57,80,89,2原创 2017-03-23 14:24:51 · 464 阅读 · 1 评论 -
(Swift 实现)排序 —— 快速排序
其实还是递归,随意选取一个数字,大的放在右边,小的放在左边,然后在左边再找一个数字大的放在右边,小的放在左边,(当然右边也在找)一直到一两个数字为止 上代码,其实思想很简单理解,但是写代码的时候有些坑的避免就酱。在代码里面我注释import UIKitvar str = "快速排序"//我们的测试数据var a = [12,343,123,123,234,3,4,5,4,5,8,2,3,68,3原创 2017-03-23 11:14:10 · 804 阅读 · 0 评论 -
(Swift 实现)排序 —— 归并排序
我的理解,就是把大问题拆成小问题,然后再合并起来就酱 直接上代码,在Swift执行一遍就看见了,终于想出来了,在playground里面执行,又快又方便呢。import UIKitvar str = "Hello, playground"var a = [22,13,5,1,23,4,23,1,23,4,12,54,56,56,34,523,2134,12,21]//这个我想的先把数组分开,分成原创 2017-03-22 18:19:39 · 836 阅读 · 1 评论 -
Swift 闭包
闭包也是swift这个语言简洁性的体现,就像在oc中block这个灵活,简洁一样,很重要。闭包就是个匿名函数,看了看在实际的使用中,和oc的block是一样的,像传个值什么的完全形态差不多就这个样子let 闭包名字:(传参类型)->返回类型 = {(传参) -> 返回类型 in 执行代码 return 返回值}原创 2017-02-15 10:54:52 · 528 阅读 · 0 评论 -
(Swift 实现)二叉搜索树 —— 创建,最大,最小,查找,插入,删除,前驱,后继,中序遍历
了解了二叉堆之后,二叉搜索树就好说了,就是一个节点,左边的子节点是不可能比他大的,右边的子节点是一定大于它的,想了半天终于把创建给写好了。直接看代码import UIKitvar str = "二叉搜索树"//这个就不跟前面的完全二叉树一样了,得自己建了类或者结构体了,我建了个类class erchaTreeNote { var data: Int var leftChild:原创 2017-03-24 18:03:40 · 645 阅读 · 1 评论 -
OC 与 Swift混编 Swift的闭包传值到OC中
随着Swift的日益完善,终究会取代OC的地位,就像Kotlin取代Java一样,不是时间的问题,而是使用者愿意不愿意被时代淘汰的问题首先是Swift中定义闭包原创 2017-12-14 10:45:04 · 2688 阅读 · 0 评论 -
Swift CollectionViewCell重排
看了网易音乐里的首页可以调整栏目顺序,觉得很好,直觉告诉我,虽然它像个TableView,可它既然能随心所欲的拖动,就一定是个CollectionView吧,还真是的 iOS 9以上才能用的API 他们分别是开始拖动item,刷新item的位置(拖动中), 还有结束以及取消。 // Support for reordering @available(iOS 9.0, *) ope原创 2017-03-22 11:38:06 · 822 阅读 · 0 评论 -
(Swift 实现)AVL树(自平衡搜索二叉树)创建,插入
这个实现起来有点难度了,看动画竟然没有摸出什么规律来,插入的方法前面是一样的,后面又做了调整的。 好吧,这个我终于看了网上的大神才搞明白Swift的代码如何写出来点这里自平衡二叉树避免了,有的时候二叉搜索树会形成链式结构,就好比,我这一串数字都已经排好序了,从小到大,那按着二叉搜索树,添加的话,都是在右边,右边的右边,那就是个链式结构了,这样就不太好了,所以就想着把它改变改变,于是就有了AVL树。原创 2017-03-28 13:39:28 · 629 阅读 · 0 评论 -
swift 函数嵌套
在swift 里面这个函数嵌套是我理解起来有点稍微难受的知识点,记录下还是用那个最经典的例子来看一下 func chooseStepFunction(backwards: Bool) -> (Int) -> Int { func stepForward(input: Int) -> Int { return input + 1 } func...原创 2017-02-07 14:55:20 · 1471 阅读 · 4 评论 -
Swift 自定义UITableViewCell以及Cell的底图跟着滑动也滑动。
找工作依然不好找,还需努力才是 还是按着OC的惯性思维看过来 首先得有个tableview,然后就是实现其的代理方法语法都好说的,就看 这个里面就是咱们定义cell时所写的代码,里面也用到复用。func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {原创 2017-02-28 17:18:56 · 919 阅读 · 0 评论 -
Swift 枚举和switch
Ok 来看看,枚举和switch枚举我认为啊,枚举就是把一些集合,给上名字,就避免了硬编码的尴尬,谁知道数字代表啥意思,肯定不如打一串有意义的字符好,而且还不会输入错误 一般来收就酱就好啦enum SomeEnumeration { //里面定义枚举}举个栗子,我定义了两个类型,一个是Beitie,一个是Renwuenum Leixing { case Beitie case原创 2017-03-01 15:37:52 · 716 阅读 · 0 评论 -
iOS 多线程问题
哈,终于有时间来整理一下这个多线程问题了,好了费话不多说,进入正题。进程进程(progress)就是一个已运行程序的实体,也是多个线程的一个容器。程序本身只是指令得集合,而进程才是程序(那些指令)的真正运行。每个进程都是独立的,都会在其专有的且受保护得内存空间中。现今分时系统得基本运行单位。线程线程(thread)它被包含在进程之中,一条线程就是进程中一个单一顺序的控制流,一个进程中并发多个线程,每原创 2017-02-24 17:34:47 · 687 阅读 · 0 评论 -
storyboard 规定启动页面
有时候删除页面会把箭头删了,导致找不到启动页面了,其实很简单如图 选择了这个选项后就OK了。原创 2017-03-18 09:37:52 · 839 阅读 · 0 评论 -
storyboard Navigation 中间视图
Navigation 有三个类别视图。 用故事版拖item这个控件上去可以填充Left Bar Button Items以及Right Bar Button Items如图,一个识别一个播放,中间那个任意view都行。 问题来了,中间这个的宽度是固定的,在7 plus调好之后,调到最大就行了。也有一个属性,下图,他会自动充满原创 2017-03-18 14:51:22 · 447 阅读 · 0 评论 -
Swift TableView自定义Cell的高度
好吧我们都知道,在 iOS里面的tableview里面cell的高度一直是固定的,想要不固定需要每次刷新出新的Cell时不断地去刷新,不断地去计算,不优雅 以前一直是完全代码去撸,没有用故事板,代码重复写的贼多,而且性能也不行,尤其是cell里面的元素多了,诉我直言————没有明显感觉。 在网上找到了这个大神写的,之前看他runtime讲解,然后一直撸过去的 。。。 他讲的很详细,我都不知道原创 2017-03-09 16:11:42 · 4490 阅读 · 1 评论 -
Swift 我遇见的一些坑
好吧,用了下storyboard ,果然是一级棒,好好用,最新的xcode 8.2更加智能了好的,废话不说了,分享点心得UICollectionViewController 创建成功会在viewDidLoad()里面加上这么一句话 self.collectionView!.register(UICollectionViewController.self, forCellWithReuseIden原创 2017-03-03 23:14:01 · 544 阅读 · 0 评论 -
oc 调用 Swift 创建的单例 (Swift4)
Swift创建了这样的一个单例@objcopen class Danli: NSObject{ static let swiftSharedInstance = Danli() //在oc中这样写才能被调用 @objc open class func sharedInstance() -&gt; Danli { return NFX.sw...原创 2018-03-23 09:56:15 · 4193 阅读 · 0 评论