- 博客(42)
- 收藏
- 关注
原创 iOS画折线图Charts框架的使用
这里是使用Charts框架画的折线图, 直接提供Demo的下载地址,因为在Demo中写的很详细了,所以只要仔细看,然后敲一遍,很简单的 Demo地址链接
2017-04-21 13:05:33
3351
1
原创 Swift自定义控制器代码提示不出来
Swift中使用自定义navgationController,设置根控制器,发现不会提示设置根控制器 原因:在自定义的nav控制器里,有这句话存在 解决:去掉上图中的nav控制器中的那段代码,就有提示了
2017-04-10 14:46:41
1206
原创 Use of 'self' in property access '...' before self.init initializes self
这里控制器不能懒加载,必须进行初始化。 解决方法:init() { super.init(rootViewController: LSAssetGroupTableController()) }将报错的那行代码的根控制器改成控制器初始化。
2017-04-10 11:21:03
1321
原创 Expected ')' in expression list
Swift中出现这个错误, 是因为不仔细,解决:let topView = UIView(frame: CGRect(x: 0, y: 64*kHeightRate, width: kScreenW * kWidthRate, height: 44))
2017-04-06 13:43:23
9647
1
原创 大话MVVM设计模式
大话MVVM设计模式 MVC设计模式是我们最熟悉的最老的一种设计模式了,也是移动端的开发最常用的设计模式,相比于MVC,MVVM中,M和V同MVC中的M和V,VM就是ViewModel,在MVC中,在C里我们要处理控件添加,数据逻辑(发送网络请求,字典转模型)和业务逻辑(控制器跳转等)还有传递model数据给view,这样就会造成控制器里代码冗余,压力过大,所以05年提出的MVVM模式很好的解决了
2017-04-02 15:59:53
972
1
原创 Swift基础语法(一)
OC转Swift快速教程(基础篇)1.常量变量篇定义一个常量let a : Int = 10定义一个变量var b : Int = 20b = 30常量不能被修改,变量可以被修改常量不可被修改的真实含义是指针不可以再指向其他对象,但是可以通过指针获取这个对象,然后修改其中的属性比如let view : UIView = UIView(frame: C
2017-03-27 07:15:30
418
原创 tableView滚动内容就会消失
tableView滚动内容就会消失,使用小面包查看内容,发现偏移那么多,不知道怎么回事,google百度上面的方法都不好用,最后解决了。
2017-03-08 11:02:53
1145
原创 简述OSI七层物理模型(简单易懂)
简述OSI七层物理模型(简单易懂),物理层:第一层、建立、维护、断开物理连接,传递介质 bit流,就是那个啥电生磁。数据链路层:第二层、进行硬件的地址寻址,差错校验,MAC地址和分组交换 也就是设备和设备之间通过网络连接的传输规范 数据:帧 分组交换:比如一辆卡车栽重5吨,而现在有30吨货物,将货物分成6份拉走,一辆运输机栽种30吨,一次性拉走
2017-02-05 21:29:17
1353
原创 设置textField里的placeHoder颜色
1.点进去类里面找属性2.猜测可能是个label,在小面包里看,打断点UITextField *text查看属性,搜索label,找到_placehoderLabel,使用KVC找到,设置颜色3.使用分类设置一个属性,实现它的set方法,调用这个set方法就可以设置颜色,将2中的代码写在set方法里。使用这个分类有一个BUG,如果这样写self.testText.placeCo
2017-02-03 10:54:59
812
原创 自定义导航条滑动返回问题
分析:我们将系统自带的返回按钮覆盖了。1.手势失效。(手势可能被清空,在一设置上根控制器的时候就打印一下手势看有没有这个手势) 2.手势的代理做了一些事情,导致手势失效。(将代理对象置空),这个方法可行。但这个时候也遇到了BUG 1.在根控制器上滑动返回的时候再次点击发现界面卡住了,变成程序假死状态,发现只要在根控制器上滑动手势就会假死,根据这个特点,我们只要将在手
2017-02-03 10:53:36
311
原创 自定义tabBar
自定义tabBar设置按钮,要首先确定系统的tabBar是什么时候添加上去的,怎么确定自定义的tabBar上添加上了四个tabBarButton这样你在添加自定义的按钮的时候就比较安全。viewDidLoad方法里是tabBarController加载完毕后调用的方法给tabBar添加子控制器的目的是确定tabBar上有几个tabBarButton,我们看是否有可能给tabBarContr
2017-02-03 10:50:53
311
原创 iOS如何修改插件
想要去改插件,首先找到插件,那么如何查找插件? 插件肯定是安装在某个指定的地方, 看代码的时候首先看有没有做配置,然后再看代码打开插件-->搜索plugin--》看配置信息就能找到安装路径Library是资源库的意思。资源库为什么叫Library呢?.localized这是本地化,如果删除这个文件,资源库就变成Library插件的路
2017-02-03 10:49:29
1455
原创 NSUnknownKeyException
这是xib的一种常见的错误,并不是不能使用xib,要清理或者删除app重新运行程序,更有甚至于是重新reset模拟器,其实就是你xib的view没有指定类,加载控制器的话只用file‘s owner即可,但是加载view的话必须指定类,file‘s owner在加载view的时候对类没有作用。
2017-02-03 10:46:30
389
原创 iOS屏幕适配
苹果为什么要推出Assets,因为13年的时候,苹果公司发现很多人盗取苹果ipa资源包里的图片,非常方便,即使不用美工项目也可以上线,所以Xcode5之后苹果推出了Assets压缩包,就没法获取里面的资源了由屏幕高度决定图片的大小 从xib中加载的view一定要重新设置一下frame,。 在开发中,不要在viewDidLoad方法里设置控件的frame,要在viewD
2017-02-03 10:40:15
286
原创 什么时候用xib,什么时候用sb?
xib用来描述一个控制器,或者一个view,sb用来描述多控制器管理的,最重要的是,只有sb有静态单元格,xib没有
2017-02-03 10:38:35
450
原创 简述自定义Button
自定义btn,修改布局是在layoutSubviews方法里,直接改变self.imageView和self.titleLabel的frame即可,调用sizeWithFont返回的就是根据字体返回尺寸。当然最简单快速的方法是sizeToFit让他自适应
2017-02-03 10:37:43
583
原创 设置self.title要注意!!!
self.title=@"haha";这个方法首先找给self.navigationItem.title赋值再给self.TabBarItem.title赋值一般非根控制器才使用self.title,因为根控制器有顶部和底部导航条,一不小心就会全部设置上
2017-02-03 10:36:04
1720
原创 layoutIfNeeded
iOS中 在动画的处理中有一个方法self layoutIfNeeded这个方法解释是next update cycle什么意思呢?其实就是在iOS中,如果有两个视图A和B,如果显示的是A视图,这时候我们需要一个动画重新布局显示B视图,iOS处于系统优化的考虑,不会立刻更新B视图,而是在合适的时机更新,所以这就是layoutIfNeeded
2017-02-03 10:35:17
592
原创 tableView的底层实现
通过在cellForRow方法和heightForRow方法打印函数,发现1.系统首先把所有的cell的位置都计算好,保存2.当cell要显示的时候,就会拿到这个cell去设置framecell.frame = self.frame[row]所以万能的设置cell分割线的方法1.取消系统的分割线2.将tableView的背景色设置成分割线的背景色3.重写setF
2017-02-03 10:34:24
706
原创 自定义cell
1.创建cell的时候指定了indexPath就必须要注册2.请求完数据tableView必须要reloadData,否则数据不显示3.加载xib使用[NSBundle MainBundle]的loadNibName方法,如果害怕名字写错可以使用NSStringFromClass(自定义cell类 class)这样名字就绝对不会错了4.1 cell如果使用xib加载
2017-02-03 10:33:30
306
原创 超过一万人就显示1.3万人这样的格式
NSInteger num = item.sub_num.integerValue;这样就可以做判断了如果刚好一万人,那就显示1万人而不是1.0万人,怎么进行设置呢?使用替换numStr = [numStr stringByReplaceString:@".0" withString:@""]也就是替换成空气即可
2017-02-03 10:27:19
748
原创 设置头像圆角的三种方式
设置圆角的方式 1.使用代码设置layer图层 2.使用runtime修改,在xib中点照相机,在User Defined Runtime Attributes修改设置KeyPath 为layer.cornerRadius ,Type为Number ,Value为图片半径下面(略)即可设置3.对图片进行裁剪。生成一张新的图片 //1.开启图形上下文
2017-02-03 10:25:07
970
原创 使用xib创建控制器
适合单控制器管理,当然这个一般用在Modal,Push的话是没有导航控制器的使用xib创建控制器,需要让xib的名字与类名相同,控制器创建的init方法,会调用initWithNibName1.首先判断有没有指定的nibName2.判断下有没有跟类名相同的xib。有的话自动加载,可是直接加载会出现问题,会报一个没有连线的错误,所以指定xib的File‘s Owner上的view和x
2017-02-03 10:22:36
365
原创 为什么我们要用cocoapods?
cocoapods:专门用来管理第三方库的在没有cocoapods之前导入AFN框架有时候需要导入一些依赖库,所以很头疼,用cocoapods导一个框架会自动导所有依赖框架.导入CocoaPods的步骤:1.写podfile文件用来描述cocoapods 1.创建podfile touch podfile 2.打开podfile open podfi
2017-02-03 10:07:34
841
原创 iOS小技巧(一)
1.当天代码敲完后,第二天要继续,但是刚起床头闷闷的,不知道从何处下手,我们可以在写一个#warning TODO:遗留的问题,然后第二天来的时候只需要看⚠中的TODO即可。2.定义宏的时候如果牵扯到数字最好加括号,防止做加减乘除运算的时候发生问题3.查看接口文档的时候,首先判断一下这个接口对不对,解析数据(百度搜索json在线解析)目的是为了查看哪些接口是需要用的
2017-02-03 09:59:41
238
原创 iOS10的适配问题
iOS9中默认非https是被禁止的不过可以设置App Transport Security Settings下的Allow Arbitrary Loads设置为YES即可,iOS10以后就不行了,强制我们使用https,提交App的话会遭到拒绝,需要在App Transport Security Settings添加一个属性,Exception Domain设置域,也就是把不支持
2017-02-03 09:58:33
594
原创 iOS崩溃统计(程序员每日必备)
写代码经常遇到的事情就是BUG崩溃,尤其app上架的时候,要统计程序的崩溃率,看崩溃日志,然后改BUG,当然模拟器运行崩溃的话,错误信息显示的很全面,根据打印出的堆栈信息就可以方便的锁定错误位置,可是真机运行是没有堆栈信息的,我们怎么调试呢?需要一个特别方便的工具Bugly,经过对比发现腾讯的bugly做的比较好,通过一年的改进,现在使用最方便,查看SDK文档,按照文档中的步骤就可以查
2017-02-03 09:57:20
2179
原创 iOS按钮各个状态浅析
1.UIControlStateNormal除了Highlighted,Disabled和Selected这三种状态以外,按钮始终处于Normal状态。此时Normal状态的按钮是可以点击并且触发点击事件,2.UIControlStateHighlighted当点击按钮并且不松开,或者HighLighted=Yes的时候在这种状态下按钮可以点击并且触发点击事件。
2016-10-30 17:03:11
2789
原创 SDWebImage缓存操作
在用户连接网络,获取网络资源的时候,SDWebImage会自动帮我们进行数据的缓存,如果要对缓存进行处理,我们必须知道SDWebImage是如何对我们的数据进行缓存操作的,首先导入--SDImageCache.h头文件,发现创建对象的方法是一个单例,这里有一个getSize方法,返回一个NSInteger类型的数据,就是缓存的大小,这时候,我们观察一下发现SDWebimage就是获取沙盒中的cac
2016-10-11 23:27:08
649
原创 越是复杂的界面越是要进行封装
遇到复杂的界面,第一个反应就是封装,第一可以更好的复用,第二需求改变真的伤不起,所以为了周期,能够更加有效率的完成任务,那就试分模块封装。恰好碰到了这个需求,写出来分享下,点击注册账号,会动画跳到注册view,换句话就是只是复用这个view。控制器不切换,业务逻辑很是相似,切换视图,一般的方式是在view.h文件中记录一个BOOL类型的变量,记录是否登陆,然后在控制器创建的该视图对象中改变这个
2016-09-21 22:48:03
352
原创 SVProgressHUD网络延迟点击返回蒙板不消失的解决方案
点击返回之后如果长时间网络不好,数据一直加载,点击返回后,蒙板就不会消失,这样的用户体验可是不好的,所以解决方案大家都知道,在页面即将消失的方法里销毁SVProgressHUD,但是仅仅这样是不够的,最近才注意到销毁蒙板只是表面,网络请求也要取消,不然,请求是一直存在的,所以思考,网络请求的发起者是,大家用的都是AFN,使用会话管理者来发送请求,发送请求是一个任务,网络上找了很多方法,
2016-09-20 22:58:35
965
1
原创 cell设置分割线占满cell的思路
1.用系统的 iOS7后出现的,在UITableView类里面有一个separatorInset属性,思考将这个属性清空设置为UIEdgeInsetsZero,试试效果,可能会不成功,因为8.0出现了Margins属性,在iOS5之前是没有margin,5之后出现的,在tableView类里找不到margin属性,所以就继续在它的父类找,一直找到UIVIew里有一个layoutMargi
2016-09-19 23:42:00
1114
原创 cell设置圆角的三种方式
1.直接用代码设置 self.iconImageView.layer.cornerRadius = 30;self.iconImageView.clipsToBounds = YES;2.这种设置方式在iOS9之前图片设置圆角过多的话会造成卡帧现象,用instruments分析会跌至30帧左右,但iOS9修复了这个问题3.使用图形上下文
2016-09-19 23:17:51
3069
原创 加载cell的xib的两种方式
1.用NSBundle加载这种方式可以加载没问题,但是一定记得要在xib中定义重用标识。不然不会cell重用。2.注册cell,开发中最常用第二种。viewDidLoad中注册创建cell的代理方法里xib中的重用标识符也不用写啦,因为已经注册过了,不用多此一举。
2016-09-19 01:09:45
326
原创 真机版本升级后Xcode没有Disk Image怎么办?
前两天iOS出10.0.1的时候,抱着开发者加上好奇心理,升级了iOS,然后发现B了UZI了,Xcode没有相应的Developer Disk Image,在/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport下查看Xcode真机测试支持的系统型号文件,然后找到的10.0文件夹拖进去
2016-09-18 21:59:13
370
原创 iOS移动开发启动图广告植入
首先做这个目的是啥,哈哈哈,用户开启软件还以为是启动图呢,所以不会造成用户的反感,废话少说,No代码NoBB首先是思路:首先,广告视图毫无疑问是一个控制器,我们关心的只是什么时候将这个控制器的视图展示出来,是的没错,就是在启动图播完的时候,这时候就上广告是土控制器,我做的时候是用xib,要让启动图和广告控制器的过度变得顺理成章,所以我在xib的一级view视图里放的是和启动图一样的ImageV
2016-09-18 15:52:46
529
原创 统一设置导航栏
1.设置导航栏的属性2.统一不要在根控制器上设置返回键3.统一设置全屏滑动效果首先我会考虑到手势影响了默认只能在边缘滑动,所以打印Nav中的手势,得到;target= target=)>>条件反射,我会先观察UIScreenEdgePanGestureRecognizer中的属性发现了edges,我会先设置edgs为UIRectEdgeNon
2016-09-18 13:32:44
560
原创 小小的分享cell和edgsForExtenedLayout
分享一下:1.当cell的selection为None时,即使cell被选中,内部的子控件也不会进入高亮状态,这个很重要,不然你的按钮状态总是达不到你要的结果 2.self.edgsForExtenedLayout = UIRectEdgNone可以调节view背景图超过导航栏,这个看需求。
2016-09-18 13:29:03
227
原创 一个很牛逼的属性appearance
只要控件继承了UIAppearance协议的类,就可以统一设置它的主题,省下了不少代码,比如设置UITabBarItem的文字属性。设置顺序也要注意:要先设置文字主题,在添加控件,这样主题才会生效。
2016-09-18 13:26:22
219
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅