iOS
文章平均质量分 56
maple_ye_1994
这个作者很懒,什么都没留下…
展开
-
【iOS】仿知乎日报,RxSwift-Part1-首页搭建
前言之前的几篇博客算是入门篇,那么这篇就是RxSwift的实战篇。由于对RxSwift的认识还不够深刻,所以项目中没有使用MVVM模型,以及编程思想也还没转变过来。该项目是参考https://github.com/kLike/ZhiHu-RxSwift实现的,最大的实现区别就是,我用的是纯代码实现,还有对网络请求的封装。此外,原项目中存在大量强解包,很容易crash。因此,我是在原来基础上,做了一些原创 2017-10-21 09:42:42 · 1270 阅读 · 0 评论 -
【iOS】自定义控件之长按按钮
需求最近接了一个需求,长按一个按钮,需要持续的触发,手指抬起时或者离开按钮触摸区域,就结束响应。思路思路1:在button上添加一个长按手势。 思路2:给button添加一个定时器实现最后笔者使用了思路2的方法,采用了定时器。采用定时器最需要解决的一个问题是,定时器的关闭,于是笔者把所有能想到可以停止定时器的情况都会调用一次~代码如下:/// 只要手放在button上就会触发class Touc原创 2017-07-06 08:22:16 · 863 阅读 · 1 评论 -
【iOS】基于Realm数据库的记账软件--Realm数据库(一)
1、数据库表设计账单表:Bill 字段 类型 说明 billID NSString 账单ID,主键 date NSString 账单产生日期 money Double 账单金额 isIncome Bool true代表收入,false代表支出 remark NSString 备注 accountID NSString原创 2017-07-11 22:11:14 · 798 阅读 · 0 评论 -
【iOS】基于Realm数据库的记账软件--前言
前言笔者在今年毕业的时候,为了应付学校的毕业设计,因此做了一款基于Realm数据库的记账软件。现在毕业后,稍微闲下来了,所以打算将整个项目的核心实现步骤记录下来,供大家学习学习。当然,项目中肯定还存在着大大小小的bug,例如数据的溢出等细节处理。那么先让大家看看项目的效果图吧~效果图时间线布局 记录界面 钱包界面 报表一 报表二 项目结构项目大体分为四大模块,分别是记录 是整个项目的核原创 2017-07-09 10:19:22 · 833 阅读 · 0 评论 -
【iOS】首行缩进两个字符
NSString *_test = @"首行缩进根据字体大小自动调整 间隔可自定根据需求随意改变。。。。。。。" ; NSMutableParagraphStyle *paraStyle01 = [[NSMutableParagraphStyle alloc] init]; paraStyle01.alignment = NSTextAlignmentLeft; //对转载 2017-04-02 13:31:32 · 3222 阅读 · 0 评论 -
【iOS】自定义textField的clearButton
方法一,rightViewtextField有一个属性叫做rightView,只要给rightView添加一个自定义的Button,监听点击事件即可方法二,KVC UIButton *button = [textField valueForKey:@"_clearButton"]; [button setImage:[UIImage imageNamed:@"icon_blueclear"]转载 2017-01-23 11:21:34 · 2288 阅读 · 0 评论 -
【解决Xcode】IB Designables: Failed to update auto layout status
问题描述今天xcode8进行编译的时候,发现有一个xib加载失败,于是找了下解决方法删除driverData文件夹(偏好设置 –> location进入)重启xcodeclean project来源网站http://stackoverflow.com/questions/28204108/ib-designables-failed-to-update-auto-layout-status-f转载 2017-01-18 15:14:57 · 9226 阅读 · 0 评论 -
iOS对第三方框架的国际化改为跟随系统改变
前言当一个项目要求在应用内切换应用语言,对于我们自己编写的代码,当然可以统一处理。比较麻烦的是,要求第三方框架的语言也随之变化。应用内切换语言的实现方法,可以参考上篇文章。分析为了实现需求,我们有以下两种做法直接修改源码运行时机制之交换方法 若采取第一种方法,将不利于我们使用pod来管理第三方框架。所以在这里我们使用运行时,交换方法(这里也可以参考我的另一篇文章,交换方法)。例子一、分析这里原创 2016-12-28 13:00:40 · 3327 阅读 · 1 评论 -
iOS--在应用内切换语言
前言在一次项目中,要求在应用内切换语言的需求。如需跟随系统改变语言的,可以参考其他的博客,这里就不多说了思路创建一个国际化管理者,通过传递一个key,再根据当前的语言环境,获取对应的value。实现步骤1、选择要国际化的语言进入如下界面后,找到最下面的“+”号,选择要进行国际化的语言 2、创建strings文件点击strings文件,在右侧工具栏找到Localization,选择要国际化的语种原创 2016-12-24 15:22:21 · 2875 阅读 · 1 评论 -
解决xcode8的快速注释失效
解决方法命令行执行以下命令sudo /usr/libexec/xpccachectl然后必须重启电脑后生效原文地址http://www.jianshu.com/p/948153008973转载 2016-11-24 17:44:25 · 820 阅读 · 0 评论 -
iOS中textField光标下移的解决方案
问题描述当textField进行输入时,出现输入位置的现象,如图解决方案笔者一开始是将textField成为第一响应者的方法写在了ViewWillAppear方法中,之后将其挪到ViewDidAppear方法中,问题即解决了- (void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; [self.sear原创 2016-11-24 09:14:04 · 2603 阅读 · 0 评论 -
【iOS】基于Realm数据库的记账软件--记账模块(二)
1、记账界面搭建从记账的需求出发,该界面需要用户输入以下账单信息: (1)账单金额 (2)账单类型 (3)相关账户 (4)账单产生的日期 (5)备注 那么,结合一下需求,开始构思一下界面如何搭建吧。 其实这个界面不难搭建,一个控制器的scrollView添加包含两个控制器的视图(一个是收入,一个是支出)。子控制器分别用CollectView布局即可。这里就不详细说明了2、数据准备首先,原创 2017-07-16 16:07:19 · 962 阅读 · 0 评论 -
【iOS】基于Realm数据库的记账软件--时间线模块(三)
1、前言接下来,我们将开始搭建时间线界面。该模块是界面展示中最大的难点–时间线布局。那么,我们先来看看效果图,因为gif上传后,动不了。所以在这里用几张截图和文字简单的描述一下,具体效果大家可下载项目自行查看~ 从图一滚动到图二时,头部从7月的数据变成6月的账单数据。2、时间线搭建2.1、前言这个时间线界面是仿照口袋记账的,一开始没有头绪的时候,就把自己的手机越狱了,然后通过Reveal进行查看其原创 2017-07-20 19:10:48 · 788 阅读 · 0 评论 -
【iOS】仿知乎日报,RxSwift-Part2-详情页的搭建
前言在上一篇,我们搭建了首页。而这篇,我们将开始搭建话题详情页。分析还是先来看下演示gif再结合话题详情的接口分析 http://news-at.zhihu.com/api/4/news/9649565。具体的json格式如下:{ "body": "<div class=\"main-wrap content-wrap\">\n<div class=\"headline\">\n\n<div c原创 2017-10-21 09:44:11 · 1280 阅读 · 0 评论 -
【iOS】RxSwift官方Example5--计算器
原文地址https://beeth0ven.github.io/RxSwift-Chinese-Documentation/content/more_demo/calculator.html前言本来这一篇是想自己写的,但是看完这个例子后,一脸懵逼,只好去搜搜有没有人分析这篇例子。结果还真给我搜索到了,看完后,发现这篇播客写的非常详细,推荐学Rxswift的都去看看。简介还是先来直接看演示的例子吧。转载 2017-09-09 14:58:11 · 524 阅读 · 0 评论 -
【iOS】RxSwift入坑感想及建议
1、RxSwift简介相信大家早已听说过函数式响应编程这个概念吧?其中不得不说的就是RxSwift了。RxSwift的目的是让让数据,事件流和异步任务,能够更方便的序列化处理。所以说,在RxSwift中,一切数据,事件切序列,我们要做的只要对序列做操作即可。2、学习建议2.1、官网首推RxSwift官网上的Demo,虽说都是英语写的,但还是很容易看的懂的。推荐边看边敲,该教程是由playground原创 2017-08-29 23:15:20 · 3711 阅读 · 0 评论 -
【iOS】RxSwift官方Example4--Github注册(MVVM)
前言这一篇,是一个仿Github注册的表单页面。官方针对这个例子,介绍了用RxSwift实现MVVM,一个是使用Driver 序列(针对UI界面的),另一个是Observable 序列。所以可以总结的知识点如下:MVVM的实现Observable序列和Driver序列的区别功能说明还是老样子,先说明这个例子做了什么。其实就是一个很经典的注册表单界面:输入用户名,检验用户名是否存在输入密码,原创 2017-09-06 14:51:02 · 977 阅读 · 0 评论 -
【iOS】RxSwift官方Example3--地理位置监听
前言其实,这一篇的题目,我觉得应该是RxSwift对代理的封装,最后还是沿用官方Example的命名吧。效果说明图一 图二 图一是当App可以使用定位信息时,显示当前的经纬度。图二是当App被禁止使用定位信息时,显示的提示信息代码解释比起上两个Example,这个Example复杂的多了。主要复杂在对Delegate的封装。如何使用RxSwift对Delegate的封装稍后再说,先看看封装后原创 2017-09-01 22:19:54 · 804 阅读 · 0 评论 -
【iOS】RxSwift官方Example1,2--加法,检验篇
前言从今天起,我把自己学习RxSwift的官方Example时的感想写下来,或许对有疑惑的人有帮助吧。传送门加法篇功能说明在这三个文本框任意输入数字后,将计算累加后的结果代码解释可以说,这个Demo是整个官方Example中最简单的。只需要对三个TextField的rx.text进行监听即可。源码如下:@IBOutlet weak var resultLabel: UILabel! @IBO原创 2017-08-31 09:39:26 · 990 阅读 · 0 评论 -
【iOS】视频全屏退出后,导航栏向上偏移20
问题描述当网页的视频全屏播放时(调用了原生的播放器播放),然后点击左上角的完成退出时,导航栏向上偏移20。如下图所示: 解决方案查了许多资料,一般提供一下两种方案:// 第一种self.automaticallyAdjustsScrollViewInsets = false// 第二种self.navigationController?.edgesForExtendedLayout = UI原创 2017-08-02 10:41:02 · 5441 阅读 · 0 评论 -
【iOS控件】拖动的时间轴
效果图下载地址https://github.com/maple1994/MPTimeZhou原创 2017-08-07 16:24:45 · 971 阅读 · 0 评论 -
【iOS】基于Realm数据库的记账软件--钱包/记账模块(四)终
1、前言接下来,我们将开始钱包模块和记账模块。其实钱包模块是整个项目中最简单的一部分了,所以我将挑几个点说一说~还是老规矩,先看看界面效果: 图一: 图二: 2、钱包详情界面的搭建钱包界面主要是由图一,图二组成的。图一的搭建比较简单,就不说明了。接下来看看图二的搭建吧。2.1、导航栏的设置从图二可以看到,我们的导航栏“不见了“。这里的实现方式其实是隐藏了导航栏的背景,并且添加了一块高为64原创 2017-07-21 21:17:48 · 690 阅读 · 0 评论 -
【iOS】Quart2D绘图消除线条“锯齿”
前言最近笔者在绘制股票折线图时,发现绘图时,线条的转折处有很明显的的锯齿!于是笔者开启了消除“锯齿”之路。。。锯齿感示例图解决方法在网上尝试了许多方法,例如开启消除锯齿等方法都没有,最后发现因为path的stroke时机调用错了,因此导致绘图产生了锯齿感。接下来看代码:class LineView: UIView { override func draw(_ rect: CGRect) {原创 2017-07-09 09:30:37 · 2161 阅读 · 0 评论 -
iOS之序列化PHAsset
场景分析情景:草稿箱 描述:从草稿箱再次进入编辑界面,继续选择图片时,保持上次图片的选择状态 问题提出:笔者的图片选择器是使用TZImagePickerController,如果弹出选择器时,要保持图片的选中状态,必须在弹出前传递上次已选中的Asset数组。那么如何保存Asset数组呢?序列化PHAsset通过序列化PHAsset的localIdentifier,最后通过PHAsset的类方法,原创 2016-11-22 09:18:14 · 1569 阅读 · 0 评论 -
iOS之Quartz2D解析
Quartz2D一、简介概述Quartz 2D是一个二维绘图引擎,同事支持iOS和Mac系统Quartz 2D能完成的工作绘制图形:线条/三角形/矩形/圆形/弧等绘制文字绘制\生成图片(图像)读取\生成PDF截图\裁剪图片自定义UI控件Quartz2D须知Quartz2D的API是纯C语言的Quartz2D的API来自于Core Graphics框架数据类型和函数基本都以CG作为原创 2016-11-18 23:10:46 · 356 阅读 · 0 评论 -
仿微博发布界面的图片选择器
效果图实现思路待完成下载地址https://github.com/maple1994/PicturePicker原创 2016-10-26 15:20:04 · 681 阅读 · 0 评论 -
iOS的Cell自适应的几种解决方案
前言对于Cell的自适应,每一个app都需要解决的。笔者尝试了以下几种方式进行Cell的自适应一、手动计算Cell的高度其实这个方案就是根据模型,计算好行高,保存在Cell中,只需要注意一点,要先计算好行高,再进行赋值操作二、给tableview设置一个预估行高给tableview设置estimatedRowHeight后,再对Cell约束好后,tableview就会自动适应行高了。这样做的性能非常原创 2016-11-06 22:10:58 · 861 阅读 · 0 评论 -
iOS框架之SDAutoLayout的基本使用
前言关于布局的iOS布局的第三方框架,大家第一时间想到的就是Mansory了吧。这次的主角是SDAutoLayout,这个框架相比Mansory来说,稍微学习成本高一点点,毕竟SDAutoLayout还集成了Cell的自适应。如果使用Mansory布局来达到Cell的自适应的话,最好的方案就是配合UITableView+FDTemplateLayoutCell。好了,废话不多说,直接开始吧基本使用首原创 2016-11-05 11:32:54 · 3887 阅读 · 0 评论 -
TextField左边增加空隙
添加空隙默认UITextField是紧贴左边的,如果想添加空隙的话,有两种做法。重写layoutSubView方法添加leftView占位实现方法:self.textField.leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, 10)];/// 注意这句话不可少self.textField.leftViewMode原创 2016-10-14 14:22:43 · 580 阅读 · 0 评论 -
iOS去除api过期警告提示
#pragma clang diagnostic push#pragma clang diagnostic ignored "-Wdeprecated-declarations"// 这部分使用到的过期api#pragma clang diagnostic pop原创 2016-11-03 18:02:50 · 3840 阅读 · 1 评论 -
iOS运行时的用途二 -- 绑定属性
前言据我们所知,分类是不能添加属性的,但是利用运行时机制的话,我们就可以做到了步骤一、创建分类,声明属性/// 添加DestinationUrl属性,用于所有轮播图都跳转至同一网页@interface SDCycleScrollView (DestinationUrl)/// 轮播图要跳转的目的urlString@property (nonatomic, strong) NSString *de原创 2016-09-27 10:25:21 · 537 阅读 · 0 评论 -
iOS运行时的用途一 -- 交换方法
前言运行时的的交换方法也叫黑魔法,在许多的第三方框架都使用了,例如AFN等步骤一、获得两个需要交换的方法Method aMethod = class_getClassMethod(self, aSel);Method bMethod = class_getClassMethod(self, bSel);二、交换两个方法的实现方式method_exchangeImplementations(aMet原创 2016-09-27 10:19:17 · 2076 阅读 · 0 评论 -
iOS中对字典的key进行排序
思路是将所有的key取出来,最后调用NSArray的排序方法进行排序。代码如下:// 将key排序NSArray *keys = dictionary.allKeys;keys = [keys sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { NSCompariso转载 2016-09-26 14:54:18 · 2149 阅读 · 0 评论 -
iOS运行时的用途三 -- 获得属性名,方法名,成员变量名
一、前言苹果有些api是不公开的,但是我们可以利用setValue forKeyPaths:这个方法对内部属性进行访问。那么前提是我们需要知道这个“keyPaths”,所以再一次利用runtime的方法二、打印成员变量名unsigned int count = 0; Ivar *ivars = class_copyIvarList(self.class, &count); for(i原创 2016-10-11 18:10:52 · 646 阅读 · 0 评论 -
ios中UISearchBar的placeHolder左对齐
实现方法重写UISearchBar,添加一个是否居中显示PlaceHolder的属性,然后利用NSMethodSignature这个类修改对齐的属性@interface NSCodingSearchBar : UISearchBar/// 是否居中显示@property (nonatomic, assign, setter = setHasCentredPlaceholder:) BOOL ha转载 2016-10-11 17:45:24 · 4895 阅读 · 0 评论 -
ios下拉刷新控件
前言网上有着不少关于ios的刷新控件的框架,其中比较出名的是MJRefresh,笔者也经常在项目中使用到。这次自己也尝试着写了一个下拉刷新控件。效果图分析一、监听滚动首先,刷新控件当然是要添加在tableView上的,并且我们需要监听tableView的滚动情况,来判断是否执行刷新操作。关于监听ttableView的滚动,我们一开始当时是想到tableView的代理方法,可是这样的话,这控件太不具备原创 2016-10-17 23:36:27 · 1322 阅读 · 0 评论 -
iOS开发可能用到的函数
原文链接:http://www.jianshu.com/p/0ca725ecf7f7rand() —-随机数abs() / labs() —-整数绝对值fabs() / fabsf() / fabsl() —-浮点数绝对值floor() / floorf() / floorl() —-向下取整ceil() / ceilf() / ceill() —-向上取整round() / roundf() /转载 2016-10-28 10:54:09 · 324 阅读 · 0 评论 -
搜索框效果
代码如下/// 截图+ (instancetype)screenShot{ UIWindow *screenWindow = [[UIApplication sharedApplication] keyWindow]; // 这里如果给1话的,截下来的是@1x的图片,显示起来会模糊,所以去@3,这样三个此处的屏幕都可以用 UIGraphicsBeginImageConte原创 2016-10-28 16:00:32 · 370 阅读 · 0 评论 -
iOS之CALayer简介
CALayer简介在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个标签、一个文本输入框、一个图标等等,这些都是UIView其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层@property(nonatomic,reado原创 2016-11-18 22:46:12 · 293 阅读 · 0 评论 -
iOS运行时的用途---归档接档
归档解档应用PYPerson.h文件:@interface PYPerson : NSObject @property (nonatomic, assign) int age; @property (nonatomic, assign) int height; @property (nonatomic, copy) NSString *name; @prope原创 2016-11-18 22:40:43 · 702 阅读 · 0 评论