IOS

iOS模拟中奖名单循环滚动效果

2019-09-07
本文实例为大家分享了iOS模拟中奖名单循环滚动效果的具体代码,供大家参考,具体内容如下 1.动态效果图: 2.思路: (1)控件:一个父View,依次添加两个tableVew,使其上下紧挨着,高度均等于所有cell的总高度,且加载相同的的数据,父视图的clipsToBounds属性一定要设置为true (2)滚动:使用计时器,调整时间及滚动大小,使展示平滑 (3)循环算法:当A列表滚动出界面时,就把它添加在B列表的下面,B列表滚动出界面时,就把它添加在A列表的下面,形成循环效果 3.Swift版

iOS实现文本分页的方法示例

2019-09-04
前言 本篇文章将分为两部分,一部分是静态文本分页,一部分是动态文本分页即边填写文本边进行文本的分页. 我们所采用的方案为:TextKit进行处理,通过glyphRangeForTextContainer方法获取文本内容视图可容纳的文本范围来对文本进行切割分页. // Returns the range of characters which have been laid into the given container.  This is a less efficient method than

iOs迁至WKWebView跨过的一些坑

2019-09-04
前言 在iOS中有两种网页视图可以加载网页除了系统的那个控制器.一种是UIWebView,另一种是WKWebView,其实WKWebView就是想替代UIWebView的,因为我们都知道UIWebView非常占内存等一些问题,但是现在很多人还在使用UIWebView这是为啥呢?而且官方也宣布在iOS12中废弃了UIWebView让我们尽快使用WKWebView.其实也就是这些东西:**页面尺寸问题.JS交互.请求拦截.cookie带不上的问题.**所以有时想要迁移还得解决这些问题,所以还是很烦的

iOS调试Block引用对象无法被释放的小技巧分享

2019-09-04
Block技术在iOS开发中非常流行也很方便,但是稍微疏忽就可能会产生引用无法被释放的问题,从而造成内存泄漏.那如何知道哪个Block持有了对象并造成内存泄漏呢? 一个解决的方法是在程序运行时通过Xcode的Debug Memory Graph 来查看当前进程中所有生命周期内的对象.这样可以在调试时通过这个功能发现一些本来应该被释放但是却没有被释放的对象.从而确定哪些对象有内存泄漏的嫌疑. 当点击某个对象时,右边可以看出这个对象的内存分配情况以及被引用的情况,从而可以进一步跟踪确认出对象是被谁持

详解MacOs免密登录CentOs操作步骤

2019-09-02
MacOs免密登录CentOs 环境 本文操作的环境如下: CentOs 7 MacOs10.12.6 生成秘钥 首先在本机生成秘钥,打开终端,输入: ssh-keygen -t rsa -C xxxxx@qq.com 后面的邮箱随意就可以 然后一直按回车键,执行结束后会在当前用户根目录下面生成一个.ssh的隐藏文件夹 我们查看一下这个文件夹 wangjianfengdeiMac:~ wangjianfeng$ cd ~/.ssh wangjianfengdeiMac:.ssh wangjian

iOS组件依赖避免冲突的小技巧分享

2019-09-01
问题缘由 本文以 YBImageBrowser[1] 组件举例. YBImageBrowser 依赖了 SDWebImage,在使用 CocoaPods 集成到项目中时,可能会出现一些依赖冲突的问题,最近社区提了多个 Issues 并且在 Insights -> Traffic -> Popular content 中看到了此类问题很高的关注度,所以不得不着手解决. 严格的版本限制 一个开源组件的迭代过程中,保证上层接口的向下兼容就不错了.为了优化性能并且控制内存,YBImageBrowser

iOS代码瘦身实践之如何删除无用的类

2019-08-25
前言 本文将提供一种静态分析的方式,用于查找可执行文件Mach-o中未使用的类,源码链接:xuezhulian/classunref (本地下载). Mach-o文件中__DATA __objc_classrefs段记录了引用类的地址,__DATA __objc_classlist段记录了所有类的地址,取差集可以得到未使用的类的地址,然后进行符号化,就可以得到未被引用的类信息. 引用类地址 可以通过Mac自带的工具otool打印Mach-o中的段信息,需要注意的是模拟器和真机对应的可执行文件,数

iOS实现文字水平无间断滚动效果

2019-08-25
IOS跑马灯效果,实现文字水平无间断滚动,示例代码如下: ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIViewController{ NSTimer *timer; UIScrollView *scrollViewText; } @property (nonatomic ,strong) NSArray *arrData; @end ViewController.m // // ViewContr

iOS常见宏理解及使用方法

2019-08-08
FOUNDATION_EXPORT, UIKIT_EXTERN 该宏的作用类似于extern,使用方法也与extern类似,在.m文件中,定义如下 NSString *const kFoundationExportString = @"Hello World"; NSString *const kExternString = @"Hello World"; 然后在.h文件中加上以下声明, 就可以在导入该.h文件的类中访问该常量. FOUNDATION_EXPORT

iOS动态更换Icon的全过程记录

2019-08-06
iOS 动态更换Icon 动态切换 App 的 icon 这个需求,在上一家公司做一款定制 App 时遇到过一次,这次领导说可能需要做,就又做了一次.虽然不是什么很难的知识点,这里也就记录一下自己做的过程吧. info.plist 文件编辑 更换 Icon 静默切换 info.plist 文件 为了动态更换 icon,我们需要先配置一下我们项目的 info.plist 文件: 1.加入 Icon files(iOS5),其中会默认有两个 item: Newsstand Icon Primary

iOS 弹幕功能的实现思路图解

2019-07-24
先来看一张效果图(LICEcap录制的有点卡, 凑合看) 理一下大概流程: 接下来实现: 弹幕视图从底部弹上来, 依次动画向上滚动, 出屏幕就移除加入重用队列, 下次使用. 定义相关属性: 1. 根据弹幕区域, 确定总共需要的弹幕itemView个数(总区域高度/最小高度),并添加到弹幕控件底部 追加一条新数据(由于需要动画处理, 当前数据动画完成后才能处理下一条数据,这里需要定义两个区:正在处理区和等待处理区) 追加数据并弹出 从处理区取出itemView并初始化其将要展示的位置,计算宽高,

iOS常用算法之两个有序数组合并(要求时间复杂度为0(n))

2019-07-17
思路: 常规思路: 先将一个数组作为合并后的数组, 然后遍历第二个数组的每项元素, 一一对比, 直到找到合适的, 就插入进去; 简单思路: 设置数组C, 对比A和B数组的首项元素, 找到最小的, 就放入数组C,依次进行下去. 代码如下: - (NSArray *)mergeOrderArrayWithFirstArray: (NSMutableArray *)array1 secondArray: (NSMutableArray *)array2 { // 全为空不处理 if (!array1.

UILabel显示定时器文本跳动问题的解决方法

2019-07-16
先看一个有问题的展示效果: 上面的gif图会发现在显示验证码计数时出现跳动和闪烁的问题.目前大多数用来实现定时器显示的控件都是UILabel. 在iOS9以前系统默认的英文字体是Helvetica, 这种字体每个数字的宽度都是相等的.而在iOS9以后默认的英文字体变为San Fransico字体,这种字体每个数字的宽度是不相等的. 正是因为数字宽度的不相等就导致了用UILabel来显示定时器文本时出现文字跳动闪烁的问题. 因此解决的方案就是选用一种等宽数字字体显示即可.为此有两个解决方案: 用H

ios设备使用iframe宽度超出屏幕的解决方法

2019-07-13
场景 在做公司官网h5项目时遇到iframe在苹果X手机上右侧超出屏幕的问题,感觉像是被截断一样,但是在其他手机上显示正常. 分析 问题原因:页面a利用iframe嵌入了b,同时设置iframe的宽度为100% ,但是页面b的实际宽度要大于外层设置的100%. 正常情况下,页面b的显示宽度应该为外层赋予的100%,但是在ios上,当iframe内真实宽度大于外层给予的宽度的时候,显示的宽度则为真实宽度. 解决 1.给iframe的外层div添加样式:overflow: auto;-webkit-

iOS中如何获取某个视图的截图详析

2019-07-12
前言 最近在做SDK的截图,想触发类似系统的截屏功能,找了一圈,总结一下靠谱的几种方式. 我写了个UIView 的category,将这几种方式封装和简化了一下. 第一种情形截图 这种是最最普通的截图,针对一般的视图上添加视图的情况,基本都可以使用. 源码: /** 普通的截图 该API仅可以在未使用layer和OpenGL渲染的视图上使用 @return 截取的图片 */ - (UIImage *)nomalSnapshotImage { UIGraphicsBeginImageContext

iOS中如何判断当前网络环境是2G/3G/4G/5G/WiFi

2019-07-10
前言 5G 什么的,还得等苹果API更新啊,不过将来还是这个处理过程就是了. 关于判断当前的网络环境是2G/3G/4G,这个问题以前经常看到,最近在一工程里看到了如果判断的API.而在撸WebRTC音视频通话的时候,看到了Demo中将SCNetworkReachability与其结合,当网络环境改变时,判断当前连接的是什么网络环境,写法欠佳(因为将其与WebRTC的其他逻辑柔和在了一个类).其实只需要将官方的Reachability做一下改进即可. 如何判断当前的网络环境 我们可以利用#impo

iOS导航栏控制的一些总结

2019-07-10
前言 许久不写UI,对UI的很多东西都生疏了,最近使用导航栏的各种场景做一些总结. 1.导航栏的显示与隐藏 导航栏的显示与隐藏,分两种情况: 1.从不显示导航栏的页面push到显示导航栏的页面. 2.从显示导航栏的页面Push到不显示导航栏的页面. 注意: 1.如果导航栏不显示时,系统的侧滑返回功能无效. 2.虽然侧滑返回功能无效,但是导航栏的 .interactivePopGestureRecognizer.delegate还是存在的. 针对以上两种情况分别处理,整个Push过程都假设是从A页

如何利用FutureBuilder提高开发效率

2019-07-08
常见场景 展示请求按钮 用户点击按钮,显示loading 展示数据或者错误 抽象模式 展示请求按钮(初始状态) 用户点击按钮,显示loading(请求中状态) 展示数据或者错误 (结束状态(成功或失败)) 转换成程序语言 以上三种现实情况对应 AsyncSnapshot 三个状态 ConnectionState.none 初始态 ConnectionState.waiting 请求态 ConnectionState.done 完成态 snapshot.hasError 完成(异常) snapsh

iOS开发避免安全隐患的要点总结

2019-07-03
现在很多iOS的APP没有做任何的安全防范措施,导致存在很多安全隐患和事故,今天我们来聊聊iOS开发人员平时怎么做才更安全. 一.网络方面 用抓包工具可以抓取手机通信接口的数据.以Charles为例,用Charles可以获取http的所有明文数据,配置好它的证书后就可以模拟中间人攻击,获取https加密前的明文数据. 1.1 中间人攻击 先简要地说下什么是中间人攻击: ①客户端:"我是客户端,给我你的公钥" -> 服务端(被中间人截获). 所以现在是: 客户端->中间人 ②

iOS开发中多线程的安全隐患总结

2019-07-02
资源共享 1块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源 比如多个线程访问同一个对象.同一个变量.同一个文件 当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题 一.解决方案 解决方案:使用线程同步技术(同步,就是协同步调,按预定的先后次序进行) 常见的线程同步技术是:加锁 1.OSSpinLock OSSpinLock叫做"自旋锁",等待锁的线程会处于忙等(busy-wait)状态,一直占用着CPU资源 目前已经不再安全,可能会出现优先级反转问题 如果等待