
swift
文章平均质量分 50
锐意无限
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
iOS -- 设置状态栏为单独的浅色模式
今天设置状态栏,发现之前使用的方法无效了,就查了不少资料才解决问题,发现在iOS9 之后。如果你的页面有导航栏的话,需要下面的几个方法配合使用,才会生效。这样三步设置下来,你会发现状态栏设置已生效。单独的设置下面的方法也无效。原创 2022-12-28 09:55:15 · 514 阅读 · 1 评论 -
Swift--多条件排序
多条件排序的判断方式是先比较第一个条件的排序,只有当第一个条件相等时候,才转到下一个条件去判断,直到找到一个不相等的条件。这个函数只能对单条件进行排序,那如果我们遇到多条件和多属性的时候怎么进行排序呢?然后我们对这个数组进行排序,规则是先按照姓排序,再按照名排序,最后是出生年份。三个条件的排序我们知道了,但是如果是N个条件呢,这时候我们会在里面写很多。包含名、姓、和生日,我们下面会对这三个属性进行联合排序。结果跟上面的方法打印的结果一样,完美!这样我们就是三个条件联合排序了。...原创 2022-07-28 17:12:54 · 1185 阅读 · 1 评论 -
Swift -- 保存打印日志到沙盒
最近项目测试的时候经常遇到卡死的问题,集成的bug收集器又收集不到问题所在,导致没有办法定位问题,就自己写个打印日志收集的方法,将之保存在沙盒里面,以便测试人员发现卡死的时候,我们能根据打印的日志定位问题所在,代码如下:调用很简单,直接在调用就行:......原创 2022-06-20 09:56:54 · 1060 阅读 · 0 评论 -
iOS 性能优化 -- APP启动时间
一、 APP 启动类型APP启动分为 冷启动、热启动两种冷启动:APP的icon从点击启动前,它的进程不在系统里,需要新创建一个进程分配给它的启动的情况。热启动:APP在启动后用户将APP退到后台,在APP的进程还在系统里的情况下,用户重新启动进入APP的过程。(这个过程做的事情比较少)二、APP启动的三个阶段、pre-main ( main()函数启动之前)main() 函数之后启动之后首屏渲染完成1、pre-main: ( main()函数启动之前)此步骤是启动第一步,原创 2022-03-18 15:22:23 · 3677 阅读 · 0 评论 -
Swift--弹框动画组件
在工作中我们经常会用到自定义的弹框,弹出的方向有时也不只一个,为了开发方便,写了一个比较能适应各个方向弹框的动画组件。记录下来以便后续使用:import UIKitpublic class DialogPresentationController: UIPresentationController, UIViewControllerTransitioningDelegate, PresentationControllerDeleate { enum DialogType {原创 2021-07-07 11:30:20 · 716 阅读 · 0 评论 -
解决IQKeyboardManagerSwift和tableView结合使用不弹框的问题
在使用IQKeyboardManagerSwift时候,发现如果textField的父视图是ScrollView的情况下,IQKeyboardManagerSwift就会失去效果。经过查找资料找到了解决方法:通常情况下,在父视图调用以下两个方法能解决: self.tableView.shouldIgnoreScrollingAdjustment = true self.tableView.shouldRestoreScrollViewContentOffset = true方法来自IQKeyboa原创 2021-06-07 15:43:10 · 1817 阅读 · 0 评论 -
RxSwift学习(三)— Observer、Binder、Subjects、BehaviorRelay
RxSwift学习(一)— RxSwift介绍RxSwift学习(二)— Observable 常见的序列创建方法RxSwift学习(三)— Observer、Binder、Subjects、BehaviorRelayRxSwift学习(四)— RxSwift 高阶函数RxSwift学习(五)— RxSwift 操作符observer(观察者)观察者(Observer)的作用就是监听事件,然后对这个事件做出响应。或者说任何响应事件的行为都是观察者观察者的创建有以下几种在subs..原创 2021-01-04 17:13:24 · 2472 阅读 · 1 评论 -
RxSwift学习(五)--- RxSwift 操作符
RxSwift学习(一)— RxSwift介绍RxSwift学习(二)— Observable 常见的序列创建方法RxSwift学习(三)— RxSwift 高阶函数RxSwift学习(四)— RxSwift 操作符原创 2020-12-30 17:09:24 · 854 阅读 · 0 评论 -
RxSwift学习(四)--- RxSwift 高阶函数
RxSwift学习(一)— RxSwift介绍RxSwift学习(二)— Observable 常见的序列创建方法RxSwift学习(三)— RxSwift 高阶函数RxSwift 高阶函数今天我们来探索下RxSwift高阶函数,和一些组合函数的用法组合操作符startWith()在开始从可观察源发出元素之前,发出指定的元素序列elements:要附加到指定序列的元素returns: 返回以指定值开头的源序列public func startWith(_ elements:..原创 2020-12-29 14:02:26 · 908 阅读 · 0 评论 -
RxSwift学习(二)---- Observable 常见的序列创建方法
RxSwift学习(一)— RxSwift介绍RxSwift学习(二)— Observable 常见的序列创建方法RxSwift学习(三)— RxSwift 高阶函数RxSwift 常见序列今天我们就来梳理下RxSwift比较常见的序列create() 序列此序列我们在前面一章已经讲过了,这里就书写个使用例子:// 1、创建序列 _ = Observable<String>.create({ (observable) -> Disposable in..原创 2020-12-28 16:17:10 · 459 阅读 · 0 评论 -
RxSwift学习(一) --- RxSwift介绍
RxSwift学习(一) — RxSwift介绍RxSwift学习(二)— Observable 常见的序列创建方法函数响应式式编程(FRP)函数式编程(FP)函数式编程就是一种抽象程度很高的编程范式,它将计算机运算看做是数学中函数的计算,而纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用简单来说: 将函数作为一个单元来处理逻辑,给定一个输入值,就会有对应的一个输出值。函数还可以作为参数和返回值。这就是函数编程。..原创 2020-12-28 15:17:54 · 3267 阅读 · 1 评论 -
Swift UIImagePickerController 有时点击取消按钮不灵敏问题
在我们获取系统相册选取照片的时候,发现取消按钮点击不灵敏,有的时候甚至会卡顿,而点击选取按钮的时候则没有这个问题,进过对层级的查看,发现这是因为iOS 11 之后,进入图片编辑界面之后,会多出一个View, 且这个View在最上层,因此遮挡了点击事件:所以为了解决这个问题,,我们需要把这个View的层级改变一下,添加以下方法: func navigationController(_ navigationController: UINavigationController, didShow原创 2020-06-17 11:10:49 · 725 阅读 · 0 评论 -
UIImageView和UILabel 因为缩放产生的模糊问题
1、UIImageView 缩放产生图片模糊的解决方法:uiimageView.layer.magnificationFilter = "nearest"2、UILabel因为缩放导致的字体模糊的解决方法:func scrollViewDidZoom(_ scrollView: UIScrollView) { //缩放结果 label?.font = lab...原创 2020-05-08 15:39:37 · 1221 阅读 · 0 评论 -
Swift 关于Data的gzip解压缩
gzip的解压缩需要导入lizb 库,然后对Data进行一个扩展:宏定义: /**解压缩流大小**/ private let GZIP_STREAM_SIZE: Int32 = Int32(MemoryLayout<z_stream>.size) /**解压缩缓冲区大小**/ private let GZIP_BUF_LENGTH:Int = 512 /**默认空数据**/...转载 2019-05-31 17:08:04 · 1308 阅读 · 0 评论 -
Swift 通过扩展将UIView转化为高清的不失真的UIimageView
ios 截屏的时候出现图片模糊情况,尝试了很多方法都没解决,无意中看到一个博客有提到这个问题,在其中找到了解决的办法,通过一个扩展区实现:extension UIView { /** Get the view's screen shot, this function may be called from any thread of your app. ...原创 2019-05-31 09:21:40 · 1074 阅读 · 0 评论 -
swift3 创建TabBarViewController
AppDelegate.swift 文件代码class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [原创 2017-03-29 15:50:51 · 5336 阅读 · 0 评论 -
swift 使用Kingfisher进行网络图片的下载
Kingfisher的下载地址:https://github.com/onevcat/Kingfisher 简单的使用方法:let url = URL(string: "url_of_your_image")imageView.kf.setImage(with: url)带有缓存图片的_imageView.kf.setImage(with: "url_of_your_image", plac原创 2017-07-31 17:24:00 · 4544 阅读 · 0 评论 -
Swift 使用 NSClassFromString 遇到的大坑
swift 中NSClassFromString的使用: 在swift中使用NSClassFromString时候 会常遇到这样的一个报错:unexpectedly found nil while unwrapping an Optional value 这是你的参数写错了的原因。 首先 NSClassFromString 在swift中 的参数不只是一个单独的类字符串,而是一个完整的包名加类原创 2017-07-28 11:33:07 · 2283 阅读 · 0 评论 -
关于在ImageView上添加Button,但是点击没反应
今天有个需求,就是在imageView 上添加一个Button, 但是发现添加以后,button的点击事件无论怎么触发都不会响应,经过查找资料,发现ImageView默认是不响应事件的 ,所以即使在上边加上个button也不会响应 解决办法是:将这个imageview.userInterfaceEnabled = YES; 手动设成YES,再次运行!就可以了强调内容原创 2017-11-22 13:30:36 · 1652 阅读 · 0 评论 -
ijkplayer的集成和运用
最近因项目需要了解和学习了关于直播的播放器集成,首先了解了ijkplayer的集成,ijkplayer 是一款做视频直播的框架, 基于ffmpeg, 支持 Android 和 iOS, 网上也有很多集成说明下面我记录一下我是如何在 iOS 中集成ijkplayer的,以便以后保存学习:一、 下载ijkplayer ijkplayer的下载地址:https://github.com/Bi...原创 2018-06-27 15:14:44 · 905 阅读 · 0 评论 -
关于在iOS11上UIBarButtonItem的图标移动的解决方法
在iOS11上我们设置左右UIBarButtonItem的时候,会发现图标会向里面偏移,如果想回到iOS10 上的效果只需要添加两句代码就行: // 感觉可有可无 // let spacer = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil) ...原创 2018-07-10 13:42:08 · 811 阅读 · 0 评论 -
swift4.0 textfield 的placeholder 占位符的字体大小和颜色的设置方法
记录一下 swift4.1 textfield 的placeholder 占位符的字体大小和颜色的设置方法let placeholserAttributes = [NSAttributedStringKey.foregroundColor : UIColor.blue,NSAttributedStringKey.font : UIFont.systemFont(ofSize: 16)]...原创 2018-08-01 09:10:02 · 1443 阅读 · 0 评论 -
ios 子视图获取父视图的视图控制器的方法(oc 和 swift)
oc 获取父视图控制器的方法:- (UIViewController *)viewController{ for (UIView* next = [self superview]; next; next = next.superview) { UIResponder *nextResponder = [next nextResponder]; i...原创 2018-10-08 14:15:44 · 4481 阅读 · 0 评论 -
swift 设置view的部分圆角
设置圆角 给UIView添加一个扩展:extension UIView { //设置部分圆角 func setRoundCorners(corners:UIRectCorner,with radii:CGFloat){ let bezierpath:UIBezierPath = UIBezierPath.init(roundedRect: self.bounds...原创 2018-10-18 13:55:44 · 1689 阅读 · 0 评论 -
Swift 把视图转化为UIImage
开发的时候我们会遇到截屏的功能,这里介绍一个简单的把UIView转化为UIImage的功能以此实现简单的截屏功能:我们为UIIView做一个扩展:Swift://将当前视图转为UIImage func asImage() -> UIImage { if #available(iOS 10.0, *) { let renderer = UI...原创 2018-12-06 11:03:30 · 1339 阅读 · 0 评论 -
Swift 设置部分圆角 功能
使用扩展为UIView 添加部分圆角功能:extension UIView { //设置部分圆角 func setRoundCorners(corners:UIRectCorner,with radii:CGFloat){ let bezierpath:UIBezierPath = UIBezierPath.init(roundedRect: (self.boun...原创 2018-12-06 11:07:48 · 1823 阅读 · 0 评论 -
解决iOS ImageView图片放大模糊的问题
我们对图片放大的时候,会发现图片变得非常模糊,为了解决这个问题我试了很多方法都不行,直到发现了一个属性,才彻底解决这个模糊问题,我们值需要修改ImageView中的一个属性就可以了:这个属性是magnificationFilter // 设置属性 magnificationFilter mapView?.layer.magnificationFilter = "neare...原创 2019-01-29 16:54:27 · 1793 阅读 · 0 评论 -
判断触摸点在一条直线上(Swift 方法)
最近在做扫地机项目,其中有个虚拟墙的功能,我们需要绘制并移动虚拟墙,这牵涉到一个知识点:判断我们的手指触摸点在虚拟墙(直线)上,研究了很久,找到一个方法,记录下来,以备后续之用: /* 判断触摸点在虚拟墙(直线)上*/ func pointIsinLine(point:CGPoint,startpoint p0:CGPoint,endpoint p1:CGPoint) -> ...原创 2019-04-04 10:41:54 · 752 阅读 · 1 评论 -
UIButton 中图片和文字的排列方式(Swift)
对UIbutton做一个扩展:enum ButtonEdgeInsetsStyle { // 图片相对于label的位置 case Top case Left case Right case Bottom}extension UIButton { func layoutButton(style: ButtonEdgeInsetsSt...原创 2019-04-04 16:29:44 · 1052 阅读 · 0 评论 -
swift UIimage剪切指定大小图片的方法
extension UIImage { // 截取部分图片 func imageAtRect(rect: CGRect) -> UIImage{ var rect = rect rect.origin.x *= self.scale rect.origin.y *= self.scale ...原创 2019-04-01 17:44:32 · 2403 阅读 · 0 评论 -
Swift3.0 block 传值
浅谈swift3 的block传值,有 a 界面跳到 b 界面,然后再从 b 界面返回 a 界面,同时 把 b 界面的数据用block传值传到 a 界面: a界面跳到b 界面的代码 func RightButtonClick() { let TagVC = TagViewController() TagVC.hidesBottomBarWhenPushed = t原创 2017-04-07 12:02:19 · 829 阅读 · 0 评论