iOS
iOS_ZCP
这个作者很懒,什么都没留下…
展开
-
UIView动画实现登录页面的UI控件逐渐向上移动并显示
(void)showAnimation { //用来存储所有UI控件的alpha值 _objectsAlpha = [NSMutableArray array]; // animationObjects 是做动画的的所有UI控件 for (UIView *animationObject in self.animationObjects) { [_objectsAlpha addObject:@(animationObject.alpha)]; CGRect animationObjectRect..原创 2021-08-23 10:16:09 · 257 阅读 · 0 评论 -
xcode 定义自己的快速文件模版
xcode创建新类文件时,系统默认自带一些代码 然后每次都要删掉这些注释和多余自己不需要的代码,再去添加一些常规代码。这就很烦很花时间了。那我们可以自定义模板,然后一创建出来的类文件,就自带常规代码。 Xcode 文件模版的存放地址:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/L...原创 2019-09-25 15:39:11 · 216 阅读 · 0 评论 -
使用MLeaksFinder检查内存泄露
导入方案 1.通过 cocoaPods 导入工程 2.手动下载项目源码拖进项目 导入后重新运行项目,然后逐个进入页面,退出页面,如果退出某个页面时,有弹窗,说明这个页面有内存泄露,有对象没被释放。 然后检查这些类对象有没有循环引用,一般造成循环的: 一.NSTimer 的 target 指向 self,然后 self 又持有 timer,所以我们可以把 target 指向中间者。 1.)Weak...原创 2019-09-18 15:06:43 · 251 阅读 · 0 评论 -
Xcode一些Analyze分析的错误
1.错误:User-facing text should use localized string macro 给label赋值的时候,提示 面向用户的文本应该使用本地化的字符串宏 此为代码中配置了本地化,面向用户的应该用字符串宏,而我们直接赋值为汉字. 解决方法: 2.Property of mutable type ‘NSMutableArray’ has ‘copy’ attribute...原创 2019-04-24 11:16:47 · 357 阅读 · 0 评论 -
使用performSelector做消息分发
一、应用场景 1、performSelector是运行时系统负责去找方法的,在编译时候不做任何校验;如果直接调用编译是会自动校验。Cocoa支持在运行时向某个类添加方法,即方法编译时不存在,但是运行时候存在,这时候必然需要使用performSelector去调用。所以有时候如果使用了performSelector,为了程序的健壮性,会使用检查方法- (BOOL)respondsToSelector...原创 2019-04-19 15:11:33 · 318 阅读 · 0 评论 -
iOS切圆角的方式
第一种方法:通过设置layer的属性(同时使用cornerRadius,masksToBounds会造成离屏渲染) 最简单的一种,但是很影响性能,一般在正常的开发中使用很少. UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)]; //只需要设置layer层的两个属性 /...原创 2019-04-19 10:53:42 · 267 阅读 · 0 评论 -
xcode自定义代码块
** 如何自定义代码块 ** 1 .选中一行代码右键 crate code snippet 2.右上角方框快速进入 iOS Xcode自定义代码块迁移 Command + Shift + G. 前往如下路径的文件夹 路径 : ~/Library/Developer/Xcode/UserData/CodeSnippets 把文件夹内部的文件复制, 粘贴到另一台电脑的Xcode同样的文件夹中即可 重...原创 2019-04-18 15:19:22 · 287 阅读 · 0 评论 -
+ load与+ initialize的异同
initialize 方法:这个方法会在第一次初始化这个类之前被调用,我们用它来初始化静态变量。 1.+initialize方法是在main函数之后调用的; 2.+initialize方法遵从懒加载方式,只有在类或它的子类收到第一条消息之前被调用的; 3.子类中不需要调用super方法,会自动调用父类的方法实现; 4.+initialize只调用一次,init可多次调用. load 方法会在加...原创 2019-04-18 10:17:00 · 228 阅读 · 0 评论 -
导入第三方库头文件后调用方法有些提示有些没提示
选择Target -> Build Settings 菜单,找到\”User Header Search Paths\”设置项 一开始没有值 新增一个值"${SRCROOT}",并且选择\”Recursive\”原创 2019-04-18 09:28:02 · 188 阅读 · 0 评论 -
iOS固定图片高度,宽度自适应缩放
当后台返回一张图片,但没有返回图片宽高尺寸时,需要我们 APP 来处理自适应显示。 1.首页我们可以在图片下载完的回调里,计算宽高,然后自己计算比例进行缩放。 2.如果是图片是显示在 tableview 或 collection 的 cell 里,需要把这个计算的宽高缓存起来,不能在滑动时重复计算这些。 //获取图片尺寸时先检查是否有缓存(有就不用再获取了) if (![[NSUserDefaul...原创 2019-04-22 11:48:32 · 3959 阅读 · 0 评论 -
多线程的应用场景
GCD线程间通信 //0.获取一个全局的队列 dispatch_queue_tqueue = dispatch_get_global_queue(0,0); //1.先开启一个线程,把下载图片的操作放在子线程中处理 dispatch_async(queue, ^{ //2.下载图片 NSURL*url = [NSURLURLWithString:@“http://h.hiphotos.baidu....原创 2019-04-17 14:18:24 · 850 阅读 · 0 评论 -
使用UIImageView实现加载GIF图片
gif图片一定不要放在项的Images.xcassets中,放在项目其它地方就可以 NSURL *fileUrl = [[NSBundle mainBundle] URLForResource:@“1” withExtension:@“gif”];//加载GIF图片 CGImageSourceRef gifSource = CGImageSourceCreateWithURL((CFURLRef)...原创 2019-04-17 14:17:15 · 4771 阅读 · 0 评论 -
NSTimer不一定精确
(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { if(!_timer) { _timer = [NSTimer scheduledTimerWithTimeInterval:1.0target:self selector:@selector(logInfo) userInfo:nil repeats:YES]...原创 2019-04-17 14:15:34 · 229 阅读 · 0 评论 -
tableview的一种缓存高度方法
@property(nonatomic,strong)NSMutableDictionary*heightAtIndexPath;//缓存高度所用字典 #pragma mark - UITableViewDelegate-(CGFloat)tableView:(UITableView*)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath*...原创 2019-04-22 09:38:13 · 457 阅读 · 0 评论