
iOS 高级
文章平均质量分 80
TommyYaphetS
你不需要无所不知,但是需要关注和掌握能够帮助你快速学习的技巧
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
收藏的iOS技术网站汇总(持续更新ing)
大牛博客 objc.io PS:经典,内容深而广 objc中国 NSHipster PS:很多小细节 NSHipster 中文版 唐巧的技术博客 PS:LZ是唐巧的脑残粉… OneV’s Den 王巍 PS:喵神..不解释 Dev Talking PS:经常翻译国外技术博客 sunnyxx的技术博客 shinobicontrols-iOS8 PS:原创 2015-06-25 17:19:11 · 4039 阅读 · 0 评论 -
下拉刷新和上拉加载的原理
很多App中,新闻或者展示类都存在下拉刷新和上拉加载的效果,网上提供了实现这种效果的第三方类(详情请见MJRefresh和EGOTableViewPullRefresh),用起来很方便,但是闲暇之余,我们可以思考下,这种效果实现的原理是什么,我以前说过,只要是动画都是骗人的,只要不是硬件问题大部分效果都能在系统UI的基础上做出来. @下面是关键代码分析:// 下拉刷新原创 2014-06-20 09:20:53 · 18060 阅读 · 4 评论 -
<objc/runtime.h>中Associative机制(在button以及block传值)
@前段时间面试找工作的时候,面试官问我有没有了解原创 2014-08-03 18:04:23 · 1928 阅读 · 0 评论 -
NSInvocation的基本用法
@在 iOS中可以直接调用某个对象的消息方式有2种:1.performSelector:withObject: 2.NSInvocation第一种方式比较简单,能完成简单的调用。但是对于>2个的参数或者有返回值的处理,那就需要做些额外工作才能搞定。那么在这种情况下,我们就可以使用NSInvocation来进行这原创 2014-08-03 20:34:23 · 3126 阅读 · 0 评论 -
lazy懒加载(延迟加载)UITableView
举个例子,当我们在用网易新闻App时,看着那么多的新闻,并不是所有的都是我们感兴趣的,有的时候我们只是很快的滑过,想要快速的略过不喜欢的内容,但是只要滑动经过了,图片就开始加载了,这样用户体验就不太好,而且浪费内存. 这个时候,我们就可以利用lazy加载技术,当界面滑动或者滑动减速的时候,都不进行图片加载,只有当用户不再滑动并且减速效果停止的时候,才进行加载.原创 2014-06-18 21:54:42 · 12077 阅读 · 3 评论 -
iOS开发之剖析"秘密"App内容页面效果(一)
最近在玩"秘密",发现点击主界面的Cell进去后的页面效果不错,就写了个Demo来演示下. 它主要效果:下拉头部视图放大,上拉视图模糊而且到一定位置固定不动,其他Cell可以继续上移.@封装的主要效果类:MTHeadEffect.m(.h文件省略,很简单的)#import "MTHeadEffect.h"#import #import // 屏幕的物理宽度原创 2014-07-28 11:51:35 · 3106 阅读 · 0 评论 -
从下往上增加的柱状图生成动画(适用于统计类应用)
我们在一些统计,li'cai原创 2014-06-17 15:59:35 · 3198 阅读 · 0 评论 -
UIViewAdditions(一个很方便使用的工具类吧)
我们在工程中,或多或少的要修改控件的坐标-宽度-高度,于是,经常性的见到大家self.view.frame.origin.x,self.view.frame.size.width.........相当的麻烦,在这里向大家推荐一个比较好的工具类,是UIView的类目,它里面对于求坐标,求高度什么的做了封装,很方便大家调用. @下载链接:点击这里 @原创 2014-06-17 17:12:37 · 2604 阅读 · 0 评论 -
自定义UIAlertView
code4App上面有很多很棒的UI特效代码,我们常感叹,好牛逼啊,这效果,太炫了,哇,怎么自己写不出来.其实,再炫的特效,都是根据苹果系统的框架而来,如果我们了解系统框架实现的原理,也就能写出属于自己自定义的控件,加上各种各样的动画. 这里,我就展示一个自定义的UIAlertView效果控件,视图出现的时候动画-先放大-再缩小-最后成正常比例,消失的时候缩小加渐隐.调用也原创 2014-06-17 19:43:01 · 2554 阅读 · 0 评论 -
点击搜索取消UISearchDisplayController的搜索状态
一般,我们用到UISearchDisplayController的时候,都是需要对一个数据源进行刷选,在UISearchDisplayController自带的tableView中展示出来,然后点击退出详情.我最近在做大众点评第三方的时候,遇到一个问题,我展示出了全部商店,想加搜索功能,但是不知道输入的搜索关键字去跟什么匹配,大众点评也并没有提供一个用来刷选的数据源接口,这样,我只能自己输入关键字原创 2014-06-14 21:00:30 · 4248 阅读 · 0 评论 -
简单的实现涂鸦功能
- (id)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { // Initialization code // 定义了一个线数组,来存储所有的线 self.lineArray = [[NSMutableArra原创 2014-03-08 09:24:47 · 2186 阅读 · 0 评论 -
automaticallyAdjustsScrollViewInsets(个人认为iOS7中略坑爹的属性)
automaticallyAdjustsScrollViewInsetsSpecifies whether or not the view controller should automatically adjust its scroll view insets.@property(nonatomic, assign) BOOL automaticallyAdjustsScroll原创 2014-05-30 14:33:59 · 6639 阅读 · 1 评论 -
导航控制器下UIViewController之间的传值 ------ 代理(delegate)传值 单例传值 Target-Action传值 属性传值 block传值 通知传值
1.代理(delegate)传值 ---- 顾名思义就是委托别人办事,就是当一件事情发生后,自己不处理,让别人来处理。 实质就是:比如右AB两个页面,A想要传值给B ,就只要先在A中得到B的指针,然后将想要传的值赋给B,之后跳转代码如下:A.h@protocol HMTShowViewControllerDelegate @optional- (void)sh原创 2014-04-03 22:52:18 · 7986 阅读 · 4 评论 -
委托(delegate)
委托(delegate)也叫代理是iOS开发中常用的设计模式。我们借助于protocol(参考博文:objective-c协议(protocol))可以很方便的实现这种设计模式。什么是代理?苹果的官方文档给了很清晰的解释:Delegation is a simple and powerful pattern in which one object in a program转载 2014-04-04 13:08:13 · 1357 阅读 · 0 评论 -
KVC在定义Model类中的妙用
@我们应用程序使用MVC架构的话,对于处理数据类,我们会单独的定义Model类,在里面为要展示的属性进行初始化赋值,一般采用的方法是通过定义对应的属性,挨个赋值.现在我要介绍的就是通过KVC,key-value的方式,进行赋值. @先来看一段代码:#import @interface MDCAllShopObjectModel : NSObject// 定义全原创 2014-07-01 19:29:05 · 3590 阅读 · 6 评论 -
位置与地图(一)定位获取位置及位置编码-反编码
*我们的应用程序,可以通过添加Core Location框架所包含的类,获取设备的地图位置. *添加CoreLocation.framework框架,导入#import *使用地图服务时,会消耗更多地设备电量.因此,在获取到设备的位置后,应该停止定位来节省电量@跟往常一样,我们通过一个demo来展示内容与效果//// HMTRootViewCon原创 2014-06-09 10:56:12 · 4618 阅读 · 0 评论 -
自定义UITabBarController
最近发现一款和糗百差不多的应用叫,它的底部标签栏的效果不错,于是动手写了下,下面给出具体代码示例.#pragma mark - 自定义UITabBar- (void)createCustomTabBarView{ _backGroundImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, ScreenHei原创 2014-06-20 17:14:25 · 1871 阅读 · 0 评论 -
iOS7中隐藏状态栏的方法
1.UIViewController中的方法- (UIStatusBarStyle)preferredStatusBarStyle NS_AVAILABLE_IOS(7_0); // Defaults to UIStatusBarStyleDefault- (BOOL)prefersStatusBarHidden NS_AVAILABLE_IOS(7_0); // Defaults to N原创 2014-08-01 09:28:57 · 1986 阅读 · 0 评论 -
两种自定义系统弹出键盘上方的view
我们在很多的应用中,都可能会遇到,在弹出的键盘上方的view,添加一些控件来作辅助功能,下面我通过2种情况来介绍:// 屏幕的物理高度#define ScreenHeight [UIScreen mainScreen].bounds.size.height// 屏幕的物理宽度#define ScreenWidth [UIScreen mainScreen].bounds.size原创 2014-08-19 18:16:34 · 4961 阅读 · 0 评论 -
设计模式(二)之策略模式
在新博客,传送门:狠狠的点击我吧!原创 2015-05-27 09:18:19 · 1741 阅读 · 0 评论 -
UIScrollView -------- 实现简单的相册功能
@在MRC环境下:释放宏 #define RELEASE_SAFELY(__Pointer) do{[__Pointer release],__Pointer = nil;} while(0)@思路:1个大的UIScrollView上嵌套N个小的UIScrollView ,小的UIScrollView实现缩放,大的UIScrollView实现滚动查看1.定义一个HMT原创 2014-04-02 19:36:41 · 1935 阅读 · 0 评论 -
iOS开发之获取系统相册中的图片与视频(内带url转换)
@话不多说,直接上代码#import // 必须导入// 照片原图路径#define KOriginalPhotoImagePath \[[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComp原创 2014-09-04 16:04:55 · 16744 阅读 · 5 评论 -
iOS7新特性 ViewController转场切换(二) 系统视图控制器容器的切换动画---push pop present dismis
@上一章,介绍了主要的iOS7所增加的API,可以发现,它们不是一个个死的方法,苹果给我们开发者提供的是都是协议接口,所以我们能够很好的单独提出来写成一个个类,在里面实现我们各种自定义效果. 1.先来看看实现UIViewControllerAnimatedTransitioning的自定义动画类/** * 自定义的动画类 * 实现协议------>@protoco原创 2014-09-05 15:00:16 · 9400 阅读 · 5 评论 -
AFNetworking 上传文件
#pragma mark - AFNetworking上传文件- (void)didClickUploadButtonAction{ NSString *fileName = @"hmt"; // 确定需要上传的文件(假设选择本地的文件) NSURL *filePath = [[NSBundle mainBundle] URLForResource:fileName原创 2014-07-02 22:38:35 · 9541 阅读 · 1 评论 -
NSScanner iOS自带扫描器
最近工作中遇到个情况,要从一段字符串原创 2014-10-27 15:40:31 · 3843 阅读 · 0 评论 -
imageNamed与imageWithContentsOfFile加载图片的区别
//----------------------------------图片————————————————————————— //读取本地图片 #define LOADIMAGE(file,ext) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle]pathForResource:file ofType:ext]]原创 2014-04-14 14:14:26 · 3813 阅读 · 0 评论 -
iOS6之后 NSAttributedString 的福利
@在iOS6之前需要使用NSMutableAttributedString时都需要导入:CoreText.framework框架的,但在iOS6 之后就不在需要了.- (void)testOfNSMutableAttributedStringAndNSAttributedString{ /** * - (void)addAttribute:(NSString *)name原创 2014-08-17 22:18:31 · 5087 阅读 · 0 评论 -
NSRegularExpression iOS自带的正则表达式
以前做验证邮箱,电话号码的时候通常用第三方的正则表达式或者NSPredicate(点这里查看以前的文章),在后期,苹果推出了自己的正则表达式来提供给开发者调用,很方便,功能也强大. 具体可以查看官方文档,包括如何书写进行匹配的正则表达式例子,这里我就不多加详述了,因为本人看那一堆符号好烦.....只好直接求助于谷歌了,下面只给出几个常用的.#define KPhoneRegex原创 2014-09-25 17:05:13 · 9567 阅读 · 0 评论 -
UILocalNotification 本地通知
首先是添加一个本地通知到系统中,代码如下:[objc] view plaincopy// 初始化本地通知对象 UILocalNotification *notification = [[UILocalNotification alloc] init]; if (notification) { // 设置通知的提醒时间原创 2014-03-20 11:16:28 · 2409 阅读 · 0 评论 -
iOS开发之系统通讯录
@iOS调用操作通讯录所用的库文件 AddressBook.framework AddressBookUI.framework#import "HMTMainViewController.h"#import #import原创 2014-07-03 20:12:55 · 2155 阅读 · 0 评论 -
iOS开发之剖析"秘密"App内容页面效果(二)
@前些天写了一篇"秘密"的Cell效果文章,但是与在工作中想要的效果还是有差距,而且扩展性很不好,于是重写封装,把整体视图都放到scrollView中,基本是和secret app 一模一样的效果了. @代码如下:(模糊效果的类就不写了,大家可以搜"UIImage+ImageEffects",还要导入Accelerate.framework)1.MTSecretAp原创 2014-08-01 16:00:59 · 1683 阅读 · 0 评论 -
iOS7获取UUID以及转换MD5
最近项目开发,运用到要获取UUID转MD5,但是iOS7不能使用获取的UDID的接口(涉及到隐私),获取MAC地址的方式的接口在iOS7下也废弃了.目前可能的就是获取UUID了,但是在iOS7下,UUID一个不好的地方是每次调用一次,生成的就不一样,这个会导致一旦APP卸载重装,UUID就变了. 下面,介绍一种比较方便的方法,来解决这一问题: 1.导入Secu原创 2014-08-20 14:53:04 · 4020 阅读 · 1 评论 -
iOS7新特性 ViewController转场切换(一) 以前总结和关键API介绍
iOS7之定制View Controller切换效果在iOS7之前,View Controller的切换主要有4种:1. Push/Pop,NavigationViewController2. Present and dismis Modal3. UITabBarController4. addChildViewController(一般用于自定义的继承于 UIViewCont原创 2014-09-05 14:11:14 · 5707 阅读 · 0 评论 -
位置与地图(三)给地图添加覆盖层
- (void)viewDidLoad{ [super viewDidLoad]; // Do any additional setup after loading the view. self.mapView = [[MKMapView alloc] initWithFrame:self.view.bounds]; self.mapView.mapType =原创 2014-06-30 16:31:01 · 5876 阅读 · 0 评论 -
位置与地图(二)地图的使用以及标注地图
继上一章,使用CoreLocation框架获取了当前设备的位置,这一章介绍地图的使用. 首先,导入框架 #import @main代码示例main.h#import #import // 引用地图协议@interface HMTMainViewController : UIViewController@endma原创 2014-06-23 11:52:28 · 2530 阅读 · 0 评论 -
系统相机的调用(只能真机试验)
#pragma mark - 相机调用拍照- (void)didClickRightButton{ if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { UIImagePickerController * camer原创 2014-06-07 15:50:20 · 3945 阅读 · 0 评论 -
UITextView 退出键盘的方式
这里介绍三种方法:1.如果你程序是有导航条的,可以在导航条上面加多一个Done的按钮,用来退出键盘,当然要先实UITextViewDelegate。代码如下:[cpp] view plaincopyprint?- (void)textViewDidBeginEditing:(UITextView *)textView {转载 2014-04-21 09:45:46 · 1394 阅读 · 0 评论 -
Objective-C在ARC下结合GCD的单例模式和宏模版
单例模式在iOS开发过程中经常用到,苹果提供过objective c单例的比较官方的写法:[cpp] view plaincopystatic MyGizmoClass *sharedGizmoManager = nil; + (MyGizmoClass*)sharedManager { @synchron转载 2014-04-06 16:13:50 · 1240 阅读 · 0 评论 -
ios学习--iphone 实现下拉菜单
http://blog.163.com/ytrtfhj@126/blog/static/8905310920116224445195/ 通过网上资料,自己借助资料写的代码,这是完全代码//****************************************************************************@i转载 2014-03-25 19:44:11 · 2768 阅读 · 0 评论 -
UITableViewCell重用机制理解
@dequeueResableCellWithIdentifier方法:这个单词翻译一下就是“出列的可重用的cell” iphone重用机制是苹果为了实现大量数据显示而采用的一种节省内存的机制,比如在UITableView和ScrollView 等地方。为什么要“可重用”?对于我们的项目来说,内存控制是必不可少的,如果一个tableview有几百个cell,这个内存消耗是很大的,而转载 2014-03-09 20:04:32 · 3470 阅读 · 0 评论