大猪蹄子的木屋

Things, ideas and future.

Swift

Swift 强大的 enum - 枚举UIColor

在最近的项目中遇到了这样一个问题,需要枚举 UIColor,但是 Swift enum raw value 不能是 UIColor 类型,因此去网上看到了一个个人感觉很方便的解决方法。 // RGBA 16进制数 enum Colors: UInt32 { case red = 0xFF3B30FF case yellow = 0xFFCC00FF case blue = 0x007AFFFF case green = 0x4CD964FF case purple = 0x5856D6FF case lightBlue = 0x5AC8FAFF case brown = 0xB97437FF case white = 0xFFFFFFFF case black = 0x000000FF

Things

macOS Mojave 10.14.2 Wi-Fi Bug

从 macOS Mojave 10.14.1 开始就有一个奇怪的BUG,当你的 Mac 处于正在连接 Wi-Fi 的状态时,你这时候去点击 Wi-Fi 图标,大概率会发生鼠标转圈,整个系统设置处于卡死状态,但是其他软件可以正常使用,这个时候一般通过重启才能解决,这种方法就很不方便。当 macOS Mojave 10.14.2 更新发布的时候,我以为这个BUG修复了,但是更新了以后发现苹果好像压根没有修复这个BUG,那只能自己动手了。 打开 Mac 终端,输入命令: sudo kill -9 `ps aux | grep -v grep | grep /usr/

Swift

踩坑之UIPopoverPresentationController

从 iOS 8 开始 popoverController 就变成 UIPopoverPresentationController, 由于最近的项目中用到了UIPopoverPresentationController, 因此出于备忘的目的,在此记录下我踩过的坑。 UIPopoverPresentationController 大小自适应 UIPopoverPresentationController大小自适应可以通过修改UITableViewController的preferredContentSize属性来进行实现,首先在UITableViewController代码文件中,override 三个方法,如下: override func viewWillAppear() { self.tableView.addObserver(self, forKeyPath: "contentSize", options: .new, context: nil) } override func observerValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey: Any]

算法

Swift 实现多叉树遍历

仅实现深度遍历,首先需要一个队列Queue,用于保存需要遍历的多叉树节点。算法流程: var depth: Int = 0 var queue = [PDFOutline]() // 多叉树遍历队列 var tempOutlineMember: outlineMember queue.append(rootOutline) // 多叉树顶点入队 // 多叉树广度优先遍历 while(queue.count != 0) { var index: Int = 0 let node = queue.remove(at: 0) // 队列的队头元素出队 var childNode = node.child(at: index) // 子节点为父节点的第一个邻节点 while(childNode

Swift

踩坑之自定义UITableViewCell的缩进

需要实现自定义UITableViewCell的缩进,首先想到的是 重写UITableView的代理方法 : override func tableView(_ tableView: UITableView, indentationLevelForRowAt indexPath: IndexPath) -> Int { return pdfOutlineData.GetDepth(Node: pdfOutlineList[indexPath.row]) } 发现对于tableview并没有实现缩进,经过查阅资料,发现,该方法只针对默认的UITableViewCell有效,自定义UITableViewCell是无效的,因为系统并不知道需要缩进哪些Cell,解决方法是在自定义UITableViewCell类中重写 layoutSubviews方法: override func layoutSubviews() { super.layoutSubviews() var contentFrame = contentView.frame let offset = CGFloat(CGFloat(self.indentationLevel)

Things

慢慢长大的小朋友

真的是越长越感觉自己像个小孩儿,我不是一个喜欢写博客的人,开这个博客仅仅是留一个给世界的窗口。 到了研究生,才知道原来生活没你想的容易,人也没你想的简单,与人相处是一门大学问。 那么研究生生活呢?说白了,就是一堆破事等着你去做,可笑的是这些事和你的关系不大,所以你时常得放下手中自己的事情,来完成这堆破事,当所有的事情完成后,你会感觉贼充实,但是细想你做了些啥,却发现有用的事情少的可怜,我判断事情有用没用的标准在于,这件事情能不能让自己或者团队有所得?学到了知识,或者结实了好友,或者让整个团队有所收获?所以我时常认为有些事情,你去做,还不如在宿舍睡一觉,或者在实验室做一次实验,或者去玩一玩游戏。事实就是这样的,有些事情甚至没有玩游戏来的有意义,而你却无可奈何,真香。 说实话,研究生生活真的和自己在本科阶段的臆想相去甚远,但是确实是挺锻炼人的,我生活中的有片彩虹管我叫大猪蹄子,典型的傻白甜,经常因为瞎了而听不见,自带快乐细胞,啥都不用干,只要听她哈哈哈就觉得很开心。对于我来说,现在的路就靠着这只小猪推着我走,因为我要给她一个酷炫的未来呀。 现在真觉得,