IOS

iOS WKWebview 白屏检测实现的示例

2020-10-20
前言 自ios8推出wkwebview以来,极大改善了网页加载速度及内存泄漏问题,逐渐全面取代笨重的UIWebview.尽管高性能.高刷新的WKWebview在混合开发中大放异彩表现优异,但加载网页过程中出现异常白屏的现象却仍然屡见不鲜,且现有的api协议处理捕捉不到这种异常case,造成用户无用等待体验很差.     针对业务场景需求,实现加载白屏检测.考虑采用字节跳动团队提出的webview优化技术方案.在合适的加载时机对当前webview可视区域截图,并对此快照进行像素点遍历,如果非白屏颜

iOS实现电子签名

2020-10-18
本文实例为大家分享了iOS实现电子签名的具体代码,供大家参考,具体内容如下 实现原理 1.使用拖动手势记录获取用户签名路径. 2.当用户初次接触屏幕,生成一个新的UIBezierPath,并加入数组中.设置接触点为起点.在手指拖动过程中为UIBezierPath添加线条,并重新绘制,生成连续的线. 3.手指滑动中不断的重新绘制,形成签名效果. 4.签名完成,转化为UIImage保存. class CXGSignView: UIView { var path: UIBezierPath? var

iOS实现音乐播放器图片旋转

2020-10-17
本文实例为大家分享了iOS实现音乐播放器图片旋转的具体代码,供大家参考,具体内容如下 通过给继承与 UIImageView 的类 CXGImageView 添加 CABasicAnimation 转动动画,实现播放器图片转动效果. 主要提供三个方法: startRotating, stopRotating,resumeRotate startRotating /// 开始动画 func startRotating() { let rotateAnimation = CABasicAnimatio

详解iOS14 Widget 开发相关及易报错地方处理

2020-10-11
首先了解下如何创建 Xcode -> File -> New -> Target 找到 Widget Extension 如果你的 Widget 支持用户配置属性,则需要勾选这个(例如天气组件,用户可以选择城市),不支持的话则不用勾选 了解下创建Widget后,系统给我们生成的文件内容 下面这个代码是没有勾选 Include Configuration Intent 的地方 Provider // Provider,顾名思义为小组件提供信息得一个struct struct Provide

浅谈关于如何检测iOS14本地网络权限的一些思路

2020-09-17
前戏 苹果iOS 14针对本地局域做了一些权限限制,详情见链接:https://developer.apple.com/videos/play/wwdc2020/10110/ wwdc翻译过来凑字数的 什么是本地网络? 这里的本地网络其实就是我们常说的局域网,是将设备接入路由器以后形成的网络,设备可以通过这张网络互相通信,如我们的设备发现.设备绑定.局域网优先等功能都是使用的本地网络. 从 iOS 13 开始,应用想要获得当前连接到的 Wi-Fi 名称,那就必须要获得定位权限.因为通过识别 Wi

iOS实现折叠单元格

2020-09-12
本文实例为大家分享了iOS实现折叠单元格的具体代码,供大家参考,具体内容如下 思路 点击按钮或cell单元格来进行展开收缩, 同时使用一个BOOL值记录单元格展开收缩状态.根据BOOL值对tableView的高度和button的image进行实时变更. 注意点: 在执行- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath( 点击当前单元格)方法时,收缩单元格,显示当前

iOS蓝牙设备名称缓存问题的解决方法

2020-09-07
1. 问题背景 当设备已经在 App 中连接成功后 修改设备名称 App 扫描到的设备名称仍然是之前的名称 App 代码中获取名称的方式为(perpheral.name) 2. 问题分析 当 APP 为中心连接其他的蓝牙设备时. 首次连接成功过后,iOS系统内会将该外设缓存记录下来. 下次重新搜索时,搜索到的蓝牙设备时,直接打印 (peripheral.name),得到的是之前缓存中的蓝牙名称. 如果此期间蓝牙设备更新了名称,(peripheral.name)这个参数并不会改变,所以需要换一种方

iOS如何开发简单的手绘应用实例详解

2020-09-06
开发一款简单的 iOS 手绘应用, 收集点,绘制形状,给形状着色,呈现给用户,好像就完了 框架是 Quartz2D 1, 收集点 首先需要有一个界面 UIView, 用这个界面监听用户的手势,收集点 用户按下手指 location(in, 从触摸事件中,获得在画板中的坐标 var lastPoint = CGPoint.zero override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { guard l

iOS如何获取最顶层ViewController详解

2020-09-05
1 获取当前屏幕显示的 Viewcontroller //获取当前屏幕显示的viewcontroller - (UIViewController *)getCurrentVC { ///下文中有分析 UIViewController *rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController; UIViewController *currentVC = [self getCurrentV

iOS 如何高效的使用多线程

2020-09-01
一.多线程简述 线程是程序执行流的最小单元,一个线程包括:独有ID,程序计数器 (Program Counter),寄存器集合,堆栈.同一进程可以有多个线程,它们共享进程的全局变量和堆数据. 这里的 PC (Program Counter) 指向的是当前的指令地址,通过 PC 的更新来运行我们的程序,一个线程同一时刻只能执行一条指令.当然我们知道线程和进程都是虚拟的概念,实际上 PC 是 CPU 核心中的寄存器,它是实际存在的,所以也可以说一个 CPU 核心同一时刻只能执行一个线程. 不管是多处

iOS程序性能优化的技巧

2020-08-31
1. 用ARC管理内存 ARC(Automatic ReferenceCounting, 自动引用计数)和iOS5一起发布,它避免了最常见的也就是经常是由于我们忘记释放内存所造成的内存泄露.它自动为你管理retain和release的过程,所以你就不必去手动干预了.忘掉代码段结尾的release简直像记得吃饭一样简单.而ARC会自动在底层为你做这些工作.除了帮你避免内存泄露,ARC还可以帮你提高性能,它能保证释放掉不再需要的对象的内存. 2.尽量把views设置为透明 如果你有透明的Views你

Swift 进阶 - map 和 flatMap的使用

2020-08-29
map 和 flatMap 主要分在集合上的使用和在可选类型上的使用,下面分别来看下. 集合上使用 map 和 flatMap 先看如下的代码: func getInfos(by name: String) -> [String] { if name == "Jack" { return ["Male", "25", "New York"] } else if name == "Lucy" { ret

iOS中各种UI控件属性设置示例代码

2020-08-28
//视图已经加载完了,可以进行ui的添加了 - (void)viewDidLoad { [superviewDidLoad]; // Do any additional setup after loading the view. //初始化UILabel注意指定该对象的位置及大小 UILabel *lb = [[UILabelalloc]initWithFrame:CGRectMake(0,20,300,200)]; //设置文字 lb.text =@"label测试我在学习中学些ui stor

iOS视频中断后台音乐播放的处理方法

2020-07-18
问题(App Store 用户评论反馈): 后台音乐播放器播放时启动App音乐播放器暂停,只能手动恢复 手机静音模式下视频播放没有声音 解决方案: 在播放音频时让其他程序静音,或者在其他程序的音频之上播放音频. AVAudioSession 类由 AVFoundation 框架引入.每个 iOS 应用都有一个音频会话.这个会话可以被 AVAudioSession 类的 sharedInstance 类方法访问,如下: AVAudioSession *audioSession = [AVAudio

iOS WKWebView适配实战篇

2020-06-22
一.Cookie适配 1.现状 WKWebView适配中最麻烦的就是cookie同步问题 WKWebView采用了独立存储控件,因此和以往的UIWebView并不互通 虽然iOS11以后,iOS开放了WKHTTPCookieStore让开发者去同步,但是还是需要考虑低版本的 同步问题,本章节从各个角度切入考虑cookie同步问题 2.同步cookie(NSHTTPCookieStorage->WKHTTPCookieStore) iOS11+ 可以直接使用WKHTTPCookieStore遍历方

iOS开发之1行代码实现缓存计算及清除缓存

2020-05-30
话不多说,直接撸代码 // // gzhCache.h // cache // // Created by 郭志贺 on 2020/5/27. // Copyright © 2020 郭志贺. All rights reserved. // #import <Foundation/Foundation.h> NS_ASSUME_NONNULL_BEGIN @interface gzhCache : NSObject /// 计算缓存大小 +(float)filePath; /// 清理缓存 +

iOS开发添加新手引导效果

2020-05-28
往往项目中经常出现此类需求 用户通过点击引导按钮可响应页面附带按钮的点击事件. // // gzhGuideView.h // GuideView // // Created by 郭志贺 on 2020/5/29. // Copyright © 2020 郭志贺. All rights reserved. // #import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN @interface gzhGuideView : UIView -(void)sho

iOS自定义UITabBar中间按钮

2020-05-24
iOS自定义UITabBar中间按钮的具体代码,供大家参考,具体内容如下 自定义YLTbaBar继承自UITabBar git地址 YLTbaBar.h // // YLTabBar.h // 自定义tabbar // // Created by nyl on 2018/10/15. // Copyright © 2018年 nieyinlong. All rights reserved. // #import <UIKit/UIKit.h> //tab页面个数 typedef NS_ENUM

iOS UICollectionView实现卡片效果

2020-04-21
现在使用卡片效果的app很多,之前公司让实现一种卡片效果,就写了一篇关于实现卡片的文章.文章最后附有demo 实现上我选择了使用UICollectionView :用UICollectionViewFlowLayout来定制样式:下面看看具体实现 具体实现 1.创建UICollectionView - (void)createCollectionView { CGFloat pading = 0 * SCREEN_WIDTH/375; LHLeftCollocationView * layout

iOS UICollectionView实现标签选择器

2020-04-20
近来,在项目中需要实现一个类似兴趣标签的选择器.由于标签的文字长度不定,所以标签的显示长度就不定.为了实现效果,就使用了UICollectionView来实现了每行的标签数量不定.cell的宽度自适应的效果.先在此分享出来: 1.自适应UICollectionViewCell 这里只是在自适应UICollectionViewCell上放一个和UICollectionViewCell保持一样大小的按钮,当选中和取消选中时改变按钮的文字颜色和边框颜色: #pragma mark---标签cell @