
编程的魅力
SoftwareDoger
一个因为喜欢村里的土狗,所以也管自己叫土狗,想让自己卑微到尘埃里,踏踏实实的做一件事,找回曾经丢失的自己,卑微到极致,最后在尘土中萌芽,破茧成蝶。
展开
-
Swift -- 将本地生成的UIImage进行持久化保存(存到文件中fileManager.createFile)
//在相册或者拍照的代理方法中struct ImageSource { var img: UIImage var title: String init(img: UIImage, title: String) { self.img = img self.title = title }} var familyImgsSource:[ImageSource] = [] { didSet{原创 2020-07-23 15:47:20 · 2162 阅读 · 0 评论 -
Swift -- UICollectionViewLayout自定义,满足你不同的布局需要
项目中需要用到UICollectionView的地方非常多,这样我们常常要写满足不同布局需要的cell的布局方式,比如在一个BaseVC中,我们设置代理数据源什么的,然后在ViewDidLoad中开始写一堆的布局代码,这样显的VC中的代码很乱,我们也没有一个清晰的认识,我常会单独创建一个继承自UICollectionViewLayout的类FamilyFlowLayout,代码如下:import UIKitclass FamilyFlowLayout: UICollectionViewLa...原创 2020-06-13 11:30:46 · 1815 阅读 · 0 评论 -
Swift -- Chirp第三方播放本地音频文件
//在项目中避免不了要在恰当的位置适时的播放一小段段或者极其简短的声音,比如点击按钮时的卡卡声,error出现弹出view时的警告声,点击拍照的咔嚓声,电量不足的噔噔声,QQ来信时的滴滴声,等等,不胜枚举,用法列举如下:1.github上面搜索Swift对应的Chirp,然后进行pod操作,或者直接把源文件拖到工程中也行,很小的一个第三方2.创建一个Sound类,代码如下:import UIKitenum SoundType: String { case click = "click.原创 2020-06-10 16:05:00 · 495 阅读 · 0 评论 -
Swift -- AVPlayerViewController播放本地视频并且通知重复播放
import AVKit override func viewDidLoad() { super.viewDidLoad() self.addPlayerView() } func addPlayerView(){ guard let url = Bundle.main.url(forResource: "720p", withExtension: "mov") else { return原创 2020-06-05 16:41:02 · 1860 阅读 · 0 评论 -
Swift -- delay(封装一个延迟执行的方法)
//在iOS开发中 有许多工作需要延迟执行,应用场景会有很多,我就不一一举例了// MARK: - 延时函数typealias Task = (_ cancel : Bool) -> ()@discardableResultfunc delay(_ time:TimeInterval, task:@escaping () -> ()) -> Task? { func dispatch_later(_ block:@escaping () -> ()) {原创 2020-05-30 17:08:51 · 1236 阅读 · 0 评论 -
Swift --棒棒糖5 --Xcode文件目录Bundle中有大量的图片加载时内存暴涨的解决方式
//Xcode Bundle文件中大量的图片: 比如 var images:[String] = ["LoginHintOverlays1.0-NoButtons-1","LoginHintOverlays1.0-NoButtons-2","LoginHintOverlays1.0-NoButtons-3","LoginHintOverlays1.0-NoButtons-4","LoginHintOverlays1.0-NoButtons-5","LoginHintOverlays1.0-NoBut原创 2020-05-15 18:36:05 · 305 阅读 · 0 评论 -
Swift --棒棒糖4--判断当前的控制器是怎么来的
extension UIViewController { var isModal: Bool { let presentingIsModal = presentingViewController != nil let presentingIsNavigation = navigationController?.presentingViewController?.presentedViewController == navigationC...原创 2020-05-09 15:11:20 · 423 阅读 · 0 评论 -
Swift --棒棒糖3--数据库增删改查操作(GRDB)
//创建两个表1.class axStudent: Record { var studentID: Int64 = 0 var studentName: String = "" var studentAge: Double = 0 var studentSex: Int = 0 var studentAddress: String = ""}2...原创 2020-05-03 11:17:55 · 856 阅读 · 0 评论 -
Swift --棒棒糖2--filter,map,compactMap,reduce,sort高阶函数
端到端原创 2020-05-01 14:05:18 · 252 阅读 · 0 评论 -
Swift --棒棒糖1--判断字符串中有没有元素
//如下方法: 说白了其实就是判断 string. func hasElement(str: String?, excludeNull: Bool = false) -> Bool { if let string = str { if excludeNull { if !string.isEmpty &&...原创 2020-04-30 16:48:35 · 333 阅读 · 1 评论 -
Swift -- 屏幕的分辨率,图片的像素,像素是否固定大小,屏幕的尺寸,来一一解惑
送给小白:像素: 图片的属性,我们可以看到公交上面滚动播放字体的屏幕,你细看的话其实是一颗颗LED的灯组成的,一个像素就是一个LED灯泡,一张图片其实就是很多个不同颜色的点组成的,这个店就是像素分辨率: 设备屏幕的属性,iPhone6的分辨率是1334 x 750, 指的就是iPhone横向有750像素,纵向有1334像素屏幕的尺寸:经常说iPhone6是4.7英寸的屏幕,XR是6.1英...原创 2020-04-26 14:24:40 · 1207 阅读 · 0 评论 -
Swift-- UIViewController中使用到的willRotate父类方法
//UIViewController的willRotate父类方法使用//以前工作中没有遇到这个需求,所以一直没了解这个父类的方法,用到后其实很简单//在你的项目中可能会遇到翻转设备使其竖屏出现新的view,横屏对应的view都Hide override func willRotate(to toInterfaceOrientation: UIInterfaceOrientation,du...原创 2020-04-25 13:44:21 · 280 阅读 · 0 评论 -
Swift [weak self]与 [unown self] 的区别
当我们知道两个对象的生命周期并不相关,那么我们必须使用 [weak self]。相反,非强引用对象拥有和强引用对象同样或者更长的生命周期的话,则应该使用 [unown self]。例如,ViewControler 对它的 SubView 的引用可以使用 unowned。因为 ViewControler 的生命周期一定比对它的 SubView 长。...转载 2020-04-16 10:33:17 · 515 阅读 · 0 评论 -
Swift--UICollectionViewCell复用出现的问题
综述:在这样的界面中,点击左侧tableViewCell对应的右侧collectionViewCell里面数据进行显示,蓝色是可用可点击的cell,红色是不可点击的cell,具体cell显示红色是根据网络请求得到使用过的DeviceNumber数组,就显示这些红色的cell,服务器返回的DeviceNumber在某一时间段内保持不变,这些在此不表。问题描述:每次点击某一tableviewCel...原创 2019-10-16 09:30:54 · 1399 阅读 · 0 评论 -
Swift - NotificationCenter通知的基本使用
不管是通知,还是代理,闭包,说白了,其主要目的都是在不同的类之间传值,比如你想在classA中得到classB中的东西,classC中得到classD中的东西。下面是一个浅显的例子:// 点击按钮present到控制器ItemViewController中 @IBAction func next(_ sender: Any) { let nextVC = ItemViewCo...原创 2019-07-31 15:24:54 · 5689 阅读 · 0 评论 -
Swift--enum枚举,协议CaseIterable
功能用法:1.常规:enum PrinterType : String , CaseIterable { case receipt = "Receipt" case kitchen = "Kitchen" case bar = "Bar" case packing = "Packing" case label = "Label"}print...原创 2019-08-08 15:32:17 · 1723 阅读 · 0 评论 -
Swift -- UIControl的分类
不管是OC还是Swift,一个继承自UIControl的类比如UIButton,注册一个点击事件的时候都会这么做:Btn.addTarget............说实话,已经用烦了!封装一个// MARK: - UIControl 添加 闭包/// UIControl 的 Target-Action 转换为闭包的‘辅助类’class ClosureSleeve { let...原创 2019-08-07 14:47:00 · 629 阅读 · 0 评论 -
Swift--UI层次-指定某View调前
通过compactMap,forEach 调用bringSubviewToFront方法,调整myView在图层最上面 self.view.subviews.compactMap({ $0 as? myView }).forEach({ self.view.bringSubviewToFront($0) })...原创 2019-08-19 11:16:53 · 401 阅读 · 0 评论 -
Swift-- NSLayoutConstraint
NSLayoutConstraintiOS自带的布局类, 一般我们在XIb中给一个空间进行布局,上左下右各是多少可以随意设置,而不用Xib用代码怎么写,写法如下:view.translatesAutoresizingMaskIntoConstraints = false //关闭AutoResizing 这种布局方式早就不用了,需要关闭 [ remot...原创 2019-08-07 17:08:51 · 582 阅读 · 0 评论 -
Swift--UIButton的titleRect,imageRect方法
现实开发中可以自定义一个UIButton,可以通过重写父类的这两个方法来实现基本的subViews的frameclass menuButton: UIButton { override func titleRect(forContentRect contentRect: CGRect) -> CGRect { return CGRect(x: 0, y: conte...原创 2019-08-21 09:41:32 · 636 阅读 · 0 评论 -
Swift--getCurrentVC拿到当前控制器
很多应用场景会用到,话不多说…func getCurrentVC1() -> UIViewController? { var result: UIViewController? = nil if let window = UIApplication.shared.keyWindow{ var keyWindow = window // ...原创 2019-08-22 10:34:28 · 1224 阅读 · 0 评论 -
日历中常见的关于闰年以及非闰年的算法
*最近对一些大家不太注意的编程原理中的小知识点总结的冲动,这些点很小但是能让大家对这些相对底层平时大家不太注意的点进行一个复习和了解:**什么是闰年,代码中如何设置或者说它的核心思路://1.定义一个年月日的结构体struct date{int year;int month;int day;}//2.查找一个每月有多少天的函数int numberofDays (struct date原创 2016-12-08 23:53:12 · 819 阅读 · 0 评论