iOS Method Swizzling
前言有个奇怪的需求:每个UIViewController在viewDidAppear:和viewWillAppear:方法中都需要执行一些操作。这里介绍一种iOS Method Swizzling方法:让viewDidAppear:和customViewDidAppear:方法调换实现方式;让viewWillAppear:和customViewWillAppear:方法调换实现方式。
实现过程
新建UIViewController的一个category - Swizzle
在Swizzle中实现customViewDidAppear:方法和customViewWillAppear:方法。
并且重写load方法,在load方法中将指向viewDidAppear:实现的指针和指向customViewDidAppear:实现的指针对调;将指向viewWillAppear:实现的指针和指向customViewWillAppear:实现的指针对调
函数指针对调实现
在AppDelegate.m中import这个Swizzle category。那么在所有的UIViewController执行 ...
iOS从图库或相机获得图片
前言一款App很有可能需要访问系统的图库(照片)或者通过相机来获取图片,比如更换用户头像等等。效果如图👇
下面来看看如何实现
查看访问权限App在第一次访问系统照片或者相机时,通常需要询问是否有权限去access相片图库或者使用相机。可以通过下面代码得知目前该app的权限👇
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253@import AVFoundation;@import Photos;// 检查使用相片的权限, YES为可以访问,NO为不能使用+ (BOOL)checkPhotoLibraryAuthorizationStatus { if ([PHPhotoLibrary responseToSelector:@selector(authorizationStatus)]) { PHAuthorizationStatus status = [PHPhotoLibrary author ...
iOS全局设置
前言一个iOS项目,有很多东西是全局通用的,比如全局常量等等。在整个项目的某个地方,对其进行全局设置,会极大的方便程序的编写,而且简化程序的结构。
不同类型的全局设置
用户登录,用户数据全局存储
用户登录,用户数据全局存储用户登录时,对用户数据进行存储,在全局都可以获得当前登录用户的数据。来看看如何实现
NSUserDefaultsNSUserDefaults用来存储轻量级的本地数据灰常合适,就比如说当前的登录用户数据(用户名,密码等等)。NSUserDefaults存储时支持的数据类型有 NSNumber, NSString, NSDate, NSArray, NSDictionary, BOOL。它有点类似键值对。
plistplist是Property List的缩写,它是一个xml格式的文件,用来存储串行化后的对象。因此plist文件可以用来存储历史登录用户的数据。
示例用户登录时1234567+ (void)doLogin:(NSDictionary *)loginData { NSUserDefaults *defaults = [NSUserDefau ...
2016-week4
前言上周末去见老同学了,week3就不写了=。= 都是借口啊,来看看这周碰上一些什么问题。
问题列表
edgesForExtendedLayout
获取版本号
文本自动调整大小
AppStore, Settings页面跳转
edgesForExtendedLayout经常会碰到的一个问题:UITabBarController包含多个UINavgationController,每个UINavgationController又包含着自己的ViewController。这个时候ViewController的frame占据了整个屏幕(既包括了NavBar的地方,又包括了TabBar的地方),很烦;如何让这样的ViewController的View只占据NavBar和TabBar之间的区域呢?这时就需要edgesForExtendedLayout属性了。edgesForExtendedLayout是UIViewController的一个属性,它只在ViewController嵌在其他容器内时才起作用,比如UINavgationController。默认的值是UIRectEdgeAl ...
Mac Colorful Terminal
前言今天装完Mysql之后发现之前终端的颜色不见了,本来那颜色看的也挺操蛋的。Google之后发现了solarized。来看看效果👇
具体步骤
Terminal设置
Vim设置
ls设置
Terminal设置
github下载solarized
1$ git clone git://github.com/altercation/solarized.git
导入terminal配置文件
打开Terminal的偏好设置,导入下面的配置文件
1solarized/osx-terminal.app-colors-solarized/Solarized Dark ansi.terminal
Vim设置Vim保持和Terminal相同的配色,设置如下👇
123456789$ cd solarized$ cd vim-colors-solarized/colors$ mkdir -p ~/.vim/colors$ cp solarized.vim ~/.vim/colors/$ vim ~/.vimrcsyntax enableset background=darkcolor ...
ActionSheetPicker源码分析
前言ActionSheetPicker可以快速生成UIPickerView+UIActionSheet的效果。效果如下👇
ActionSheetPicker代码结构从github上将项目拷贝下来后,可以看到ActionSheetPicker的文件目录如下👇
ActionSheetPicker可以实现4种类型的picker:
ActionSheetStringPicker
ActionSheetDistancePicker
ActionSheetDatePicker
ActionSheetCustomPicker
这4种picker都是继承自AbstractActionSheetPicker。下面以ActionSheetStringPicker为例,来分析ActionSheetPicker的源码。
ActionSheetStringPicker使用示例ActionSheetStringPicker的使用很简单,示例代码如下👇
123[ActionSheetStringPicker showPickerWithTitle:nil rows:@[@"男" ...
2016 Week 2
开篇第二星期开始,先和浩哥去看了美人鱼,就开始每天继续Coding-iOS的学习了。个人感觉这个Coding-iOS项目代码写的真好,开源之后简直就是iOS菜鸡开发者的福音。自己写起来之后,才发现coding速度真的是慢=。=
问题列表
UITextField有关
自定义UITableViewCell流程
NSUserDefaults基础
dispatch_once 和 static 变量
创建category
SHA1加密
2种enum类型
Coding调用API流程
MBProgressHUD基础
keyWindow
文件操作有关
账户输入提示框
enumerateObjectsUsingBlock:
2种UITableViewCell重用方式
NSRange基础
CAShapeLayer基础
显示/隐藏导航栏
ViewController之间切换卡顿
SDWebImageOptions
在category中新增property
用户名存储整个流程
UIAlertController基础
UITextField有关介绍几个UITextField的属性和方法
secu ...
JazzHands
简介JazzHands, Github上的开源库,非常适用于app的介绍界面。先看看效果图👇👉demo代码在这里👈
主要流程
创建JazzHandsViewController
定义介绍页面的页数
添加图片
定义每张图片的位置
添加滑动时候的效果
实现步骤准备工作
使用cocoapod添加JazzHands
pod 'JazzHands', '2.0.8'
创建工程,新增JazzHandsViewController,继承自IFTTTAnimatedPagingScrollViewController
导入头文件
#import <IFTTTJazzHands.h>
定义页面页数其实就是重写 - (NSUInteger)numberOfPages; 函数
添加subView将每张图片封装到UIImageView,并添加到JazzHandsViewController的subView里面关键代码:
定义每张图片位置使用keepView:onPages:或者keepView:onPages:atTimes:定义位置
k ...
2016 Week 1
开年第一周,准备换个方式写博客。就当周记吧,可以肯定这种模式也是持续不了多久的=。=
开篇2月20号回到武汉;21号回到学校,被基友叫过去看三打白骨精(其实想去看美人鱼来着的…);然后就开始工作了。开学第一周,没啥具体的任务。自己在github上找了Coding_iOS的源码,照着做了起来。来看看第一周碰到的各类问题。
问题列表
状态栏(UIStatusBar)的显示
导航栏(UINavigationBar)的设置
判断iPhone机型
第三方库: JazzHands
UIPageControl使用
圆角Button
ViewController的两种跳转
UITableView的tableHeaderView和tableFooterView
UIActionSheet使用
SDWebImage cache相关
进入正文…
状态栏(UIStatusBar)的显示之前有一篇博客讲到UIStatusBar的设置(iOS导航栏和状态栏设置),这里的是另一种方法–全局设置UIStatusBar。
在.plist文件中,将UIViewControllerBasedStatusBarApp ...
UITableView基础应用
前言今天介绍一个简单的UITableView,简单的界面,涉及到UITableView的一些基础的DataSource和Delegate。效果图👇
简介最近在跟着github上的一个项目:MyOne-iOS,做着高仿的一个app(韩寒出品),其中的设置界面就需要做到上述的效果。效果图使用了UITableView,它涉及到UITableView基础的DataSource和Delegate。下面我就来分享一下其中代码。
UITableView代码实现UITableView按Section来分成各个区域,其中每个Section又包含一个Header和多个Cell。效果图中一眼看出该UITableView分为4个Section。因此UITableView的代码思路也应该按Section来展开。
UITableView的整体设计所谓整体设计就是设计UITableView的每个Section的共有特性,以及UITableView的DataSource。先来看看DataSource(使用数组来存放):
注意: 这里多设计了一个Section,将在后面解释。
再来设计UITableView的 ...