IOS
郎lang郎
这个作者很懒,什么都没留下…
展开
-
ios设置Cell的默认选中第一行
要做的需求如下图,当选到最后一行时,对选中的cell设置文字变为蓝色,右边出现☑️图标这里介绍不需要自定义cell,相当简洁的办法,直接上代码在cellForRowAtIndexPath方法里设置 //设置selectedBackgroundView cell.selectedBackgroundView = [[UIViewallo原创 2017-04-28 15:37:32 · 4775 阅读 · 0 评论 -
IOS11使用IQKeyboardManager导致tableview位置变形
项目里用了IQKeyboardManager来管理键盘弹起落下,当更新IOS11后,调出键盘然后落下有几率让界面变形,如下图:具体原因不知道,因为看到IOS中废弃了automaticallyAdjustsScrollViewInsets属性,所以猜测是IQKeyboardManager在弹起和落下时对automaticallyAdjustsScrollViewInset原创 2017-09-28 17:14:49 · 3372 阅读 · 1 评论 -
IOS11界面适配问题
兴冲冲升级Xcode 9+iOS 11后,发现我的项目变得乱七八糟,主要体现在tableview、导航栏这两个方面;赶紧逐个查看,发现了以下三个问题:1.tableview大部分都下移了大概30个像素2.导航栏的返回按钮下移3.键盘失去了完成按钮4.会出现紫色警告,基本上都是下面这种如果有我相同问题的,可以往下看1.tableview大部分都下移原创 2017-09-21 18:00:14 · 1266 阅读 · 0 评论 -
嵌套tableview的滑动问题
嵌套tableview的滑动问题。整体是一个tableview,里面的列表内容还需要tableview上部分的内容需要随着滑动隐藏,而下部分内容头(“全部课程”)需要停留在界面不被隐藏原创 2017-12-27 18:51:42 · 2722 阅读 · 1 评论 -
iOS setNeedsDisplay不能正常调起drawRect方法的某个原因
项目里有个点击cell下载对应文件的功能,需要显示每个文件的下载进度。下载因为是很耗时的操作,所以一般都是放在子线程中完成,同时带进度数值progress回调的block也是在子线程中。我开始的想法是,只需要在block中调用[xxx setNeedsDisplay];再重写xxx的drawRect方法就行了- (void)d原创 2018-03-02 09:22:47 · 1713 阅读 · 0 评论 -
iOS 使用自定义按钮删除对应cell
很多app设计的时候因为各种原因,导致tableView不能通过右滑cell的菜单来删除相应的cell。这种情况下删除按钮通常放在对应的自定义cell上,如下图:之前我的删除功能都是通过 删除数据源对应元素,然后通过tableView reloadData 来实现删除功能。这样做有两个小问题:1.每删除一个都需要reloadData,感觉很浪费2.没有删除的动画效果,体验不好于是按照自己的想法改动...原创 2018-03-06 10:22:51 · 2781 阅读 · 0 评论 -
Block存放区域的类型
看到有个面试题上问block的类型,本来以为是以参数和返回值来分类,看到答案是以存放区域来分类的,特地研究了一下 int a = 10; void(^ blockA)(void) = ^{ NSLog(@"just a blockA"); }; NSLog(@"blockA:%@",blockA); void(^ blockB...原创 2018-03-25 17:45:12 · 527 阅读 · 0 评论 -
iOS无数据视图DZNEmptyDataSet的使用和原理
地址:https://github.com/dzenbot/DZNEmptyDataSet功能当tableview或者collectionView没有数据时,展示指定无数据视图使用步骤只需要遵守协议DZNEmptyDataSetSource和DZNEmptyDataSetDelegate成为代理self.tableView.emptyDataSetSource = self;self.tableV...原创 2018-04-10 16:56:44 · 2995 阅读 · 0 评论 -
pod引用的库打包时报错library not found for -lXXX
项目通过build或者run都是不报错的,但是打包就会出问题library not found for -lXXX。碰到这类问题总是很头痛,在网上各种找解决方法,以下是我收集的一些解决方法(均为单独使用,不需要全部执行):Build Setting > Library Search Paths 添加报错的库的路径进入target的 Build Phases- Link binary Libr...原创 2018-04-16 15:37:25 · 5286 阅读 · 3 评论 -
Agreement has been updated--Edit Phone Number最便捷解决办法(不需要安全提示问题和双重认证)
这两天需要提交新版本,于是上到开发者网站,发现Agreement has been updated。按照之前的套路,基本点一下review就完事了。但是这次要更新手机号(不知道要干嘛),只能按照步骤跳到appleid的网站来修改。进入之后发现个严重的问题。。。安全提问的回答忘记了。。。账号申请了好久,之前总以为自己记得,没有保存好(以后切记!!不管什么资料,都要保存一份)其实我们的目的只是要修改账...原创 2018-04-24 14:20:05 · 2445 阅读 · 2 评论 -
MJRefresh中mj_reloadData方法死循环的问题
项目中用到MJRefresh来刷新数据,昨天在iOS9上的iPhone5s上测试项目的时候崩溃了。打开调试发现在MJRefresh库中的mj_reloadData方法死循环,改用iOS11的iPhone7测试却没有出现。应该iOS9的问题,网上找的一些答案有说是因为库冲突导致reload被methodSwizzling 了两次,建议把其中一个methodSwizzling去掉。以下是MJRef...原创 2018-07-24 09:51:18 · 2619 阅读 · 0 评论 -
lottie介绍及使用相关(转)
转自:https://www.jianshu.com/p/5bd4e42a3115 Lottie.jpgOverview因为应用的下个版本的很多交互是参考Airbnb来的,而Airbnb开源了一个叫做Lottie动画库,而该库可以完成很多复杂炫酷的动画。所以在此翻译了Lottie的相应文档,熟悉其API。通过阅读代码和Demo可以看...转载 2019-03-25 11:31:08 · 1269 阅读 · 0 评论 -
iOS 设置自定义间距的文字下划线
网上看到很多用NSAttributedString的NSUnderlineStyleAttributeName来设置的,方法很简便,网上也很多,就不发了。效果如下:下划线和文字没有间隔,贴在一起的。感觉不好看,而且后面项目还有一些需要用下划线的按钮,所以写了一个通用的UIButton子类,UnderlineTextButton重写drawRect方法,用coregraph...原创 2019-08-07 11:39:04 · 4541 阅读 · 0 评论 -
限制UITextView的输入字数
要实现UITextView的输入字数限制需要遵守<UITextViewDelegate>协议,然后在其字符变化触发的代理方法中做限制操作//需要限制输入字数的textView,以下已250字为例@property (weak, nonatomic) IBOutlet UITextView *textView;//添加一个显示字数的label@property (weak, nonatomic)原创 2016-01-29 11:27:32 · 310 阅读 · 0 评论 -
清除缓存功能
代码有点多,可以写一个工具类继承自NSObject 工具类.h文件#import <Foundation/Foundation.h>#import "UIImageView+WebCache.h"@interface ClearCacheTool : NSObject+(float)fileSizeAtPath:(NSString *)path;+(float)folderSizeAtPat转载 2016-02-17 15:22:10 · 396 阅读 · 0 评论 -
IOS 获取当前方法的方法名
之前一个项目做统计功能的时候,需求不止统计界面,而且还要求统计很多具体事件,当时完全逐个填写字符串来做的。现在想想应该可以简单一点,比如我在官方文档上看到的_cmd方法。“The _cmd variable is a hidden argument passed to every method that is the current selector”就是说_cmd在Objec原创 2017-04-06 13:55:32 · 5004 阅读 · 2 评论 -
在pods导入非pod的文件报错(file not found)的解决办法
大部分时候我们的第三方库都是用cocoapods来管理的,工作当中偶尔会遇到需要修改第三方库的情况,当需要将其他project中的头文件导入pods的第三方库时,直接导入会报错'xxx.h'file not found。原因: Pods Project中头文件的搜索根源没有添加对应的源,需要在User Header Search Paths中添加。解决办法:点击原创 2016-08-05 10:24:59 · 6799 阅读 · 0 评论 -
IOS 写一个整洁易用的tableView
整体还是用MVC设计模式,其中的M一般由两个模型类组成一个模块,V对应tableview要用到的cell,C则是tableviewController。M:可以将tableview的数据对应成一个二维数组,二维数组中的一维数组对应每一个section,一维数组中的元素对应每一个cell。因此我们可以新建两个模型类,一个为BaseItem,它的属性对应cell中需要用到的数据如@pr原创 2016-04-27 15:22:16 · 298 阅读 · 0 评论 -
IOS 将请求参数字典转换为参数字符串
适用的地方蛮多的,比如请求出错后台需要你的请求连接来debug。最后把方法写在NSDictionary的分类中,具体代码如下:- (NSString *)URLRequestStringWithURL:(NSString *)urlstr{ NSMutableString *URL = [NSMutableString stringWithFormat:@"%@",urlstr]; /原创 2016-04-08 17:07:23 · 4293 阅读 · 0 评论 -
IOS 返回JSON数据中存在NULL的解决办法
有些后台写的不好,返回数据的字段偶尔有NULL类型存在,如果不直接赋值给其他对象就会造成崩溃。解决办法的主要思路就是将其中的NULL对象转换为@”“空字符串。以下是封装好的方法创建一个字典的分类 .h文件#import <Foundation/Foundation.h>@interface NSDictionary (SetNilStr)+(id)changeType:(id)myObj;@e原创 2016-03-17 16:36:50 · 5271 阅读 · 5 评论 -
IOS模拟器上下部分黑屏(界面未占满)解决办法
如下图所示:上下部分都是黑色,界面没有占满整个屏幕。解决办法:1.创建一个launchScreen2.讲创建好的launchScreen设置为Launch Screen File再次启动,就OK了原创 2016-03-02 10:52:08 · 3080 阅读 · 0 评论 -
赋值字符到手机剪贴板
UIPasteboard *pab = [UIPasteboard generalPasteboard]; NSString *string = @"测试"; [pab setString:string]; if (pab == nil) { //复制失败 }else { //赋值原创 2016-02-27 11:49:36 · 688 阅读 · 0 评论 -
创建系统日历的日历事件
先上效果日历中:在锁定屏幕情况下看到的提醒:手机未锁情况下的提醒:以下是代码#import //事件市场 EKEventStore *eventStore = [[EKEventStore alloc] init]; //6.0及以上通过下面方式写入事件 [eventStore requestAcce原创 2016-02-22 14:19:07 · 334 阅读 · 0 评论 -
存在导航栏时UITextView 上面空白 光标下移
解决办法self.automaticallyAdjustsScrollViewInsets = NO;凡是继承UIScrollView的控件都会受到UIViewController的这个automaticallyAdjustsScrollViewInsets属性的影响. 默认为YES, 当有Navigationbar的时候,UITextView的表现就是上面空白. 设为NO,UITextVie原创 2016-01-29 11:15:20 · 1167 阅读 · 0 评论 -
Iphone上使用UIPopoverPresentationController
1.遵守协议<UIPopoverPresentationControllerDelegate>2.创建 //创建将被推出的VC UIViewController *popVC = [[UIViewController alloc]init]; //设置颜色区分 popVC.view.backgroundColor = [UIColor lightGrayColor];原创 2016-01-28 16:34:30 · 829 阅读 · 0 评论 -
让具有导航栏的界面滑动返回
遵守协议<UIGestureRecognizerDelegate>在viewdidload中实现以下方法id target = self.navigationController.interactivePopGestureRecognizer.delegate; // 创建全屏滑动手势,调用系统自带滑动手势的target的action方法 UIPanGestureRecognizer原创 2016-01-27 09:57:59 · 420 阅读 · 0 评论 -
理解anchorPoint与position
anchorPoint与position转载 2017-04-25 10:52:28 · 375 阅读 · 0 评论 -
iOS xcode报错 App Transport Security has blocked a cleartext HTTP (http://) resource load的解决办法
“App TransportSecurity has blocked a cleartext HTTP (http://) resource load since it isinsecure. Temporary exceptions can be configured via your app's Info.plistfile.”简而言之:ATS禁止了HTTP的明文传输,因为它不安全。可以修转载 2016-03-09 10:41:22 · 297 阅读 · 0 评论 -
iOS导入应用外文件
之前需求提出想要像安卓一样从手机的文件夹获取文档安卓那种肯定做不到,只能用像QQ、微信之类的外部app传入文档。在网上看了一些资料,总结如下:1、拷贝文档方式,如图这是从QQ上打开的word文档,然后点击用其他应用打开,图中第二行,可以找到很多其他app,问题是如何让自己的app处于其中。方法如下:其实只需要在info.plist注册文件类型,就可以在其他app中找到...原创 2019-09-06 16:14:35 · 1989 阅读 · 0 评论