随笔分类 - IOS
iPhone, iPad, mac方面的技术文章
摘要:NSDateFormatter用于NSDate与NSString之间的转换:NSDate转为NSString:NSDate *date = [NSDate date];NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];[dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"]; //设置时间输出的格式为年-月-日 时:分:秒NSString *dateDesc = [dateFormatter stringFromDate:date];NSString
阅读全文
摘要:使用地图钉,首先我们需要为地图钉创建一个附注类(Annotation),代码如下:@interface MyAnnotation: NSObject<MKAnnotation>// 实现MKAnnotation的方法,该方法在地图钉被拖拽时被调用,也可主动调用,用来更改地图钉的位置。-(void) setCoordinate:(CLLocationCoordinate2D)newCoordinate;Annotation不仅记录了地图钉的位置,还包括地图钉的名称(property title)以及副名称(property subtitle)。@implementation MyAn
阅读全文
摘要:CLLocationManager类的作用是监听GPS的位置消息,当用户坐标发生变化时,会调用下面的方法进行通知:-(void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation;问题来了,当我们把newLocation中的坐标映射到MKMapView控件上时,会发现这个点跟本不是我们所在的位置,而是离我们百米左右的某个地方。至于原因,。那么,我们需要将原始的(真实的)位置坐标,转换为有
阅读全文
摘要:有关ARC的背景和概念不做详细说明了,简而言之,使用ARC,程序员不需要再关心对象的生命周期,编译器在编译时会聪明的补上这些代码。使用ARC的一些规则:1. 不允许调用对象的retain, release, auto-relase, retain count等方法,也不允许通过类似@selector(retain)的方法进行间接调用。2. 不允许调用对象的dealloc方法。 虽然重定义类的dealloc方法是允许的,但不能在其中调用[super dealloc]或任何成员变量的dealloc方法,只允许进行一些善后工作,比如释放某些文件资源。3. 在@property声明中,不再允许使用re
阅读全文
摘要:Android和IOS在UI线程上的设计思想有很多相似的地方1. UI线程,即主线程,负责显示软件内容,及接收用户的输入。2. UI线程不能被耗时的任务长时间占据,当超时一定时长时,会弹出警告框或结束App。3. 非UI线程不允许直接对控件进行操作,需要发消息通知主线程来update UI。
阅读全文
摘要:UIKit Animation创建与启动的两种方式:1. 使用Animation Context[UIView beginAnimations:@"box-animate" context:nil]; //开始创建动画,每个动画都有其字符串名称,这里我们以"box-animate"为例。[UIView setAnimationDuration:1]; //动画运行时间为1秒 // 在这里设置变化的最终状态 someBtn.backgroundColor = [UIColor blueColor]; // 按钮someBt...
阅读全文
摘要:在Windows应用程序中,经常使用模态(Model)对话框来和用户进行简单的交互,比如登录框。在IOS应用程序中,有时我们也希望做同样的事情。但IOS的UI库中,没有模态对话框,最接近那个样子的应该算是AlertView。但仅用AlertView,我们只能做文字提示,而不能和用户做交互。本文将介绍如何基于AlertView做定制,实现模态对话框的功能。以密码修改框为例:1. 首先,我们要继承AlertView类,在类的头文件PwdModifyView.h中,加入控件的声明 这里我们把控件都声明为property,目的是让外部的类可以访问用户输入的数据。#import <UIKit/UI
阅读全文
摘要:App本地化的需要不用讲大家也都明白,本文将介绍一种简单的方法来实现字符串的本地化。在不考虑本地化的情况下,我们如果在代码中给一个Button定义title,一般会这样写:btn.titleLable.text = @"Example Button";也许我们已经写了很长的代码才考虑到本地化的问题,大可不必头疼,这时候,我们要做的是把代码从头扫一遍,然后把每个会显示给用户看的字符串做如下修改:(对于内部使用的字符串就用不着本地化了)btn.titleLable.text = NSLocalizedString(@"btn_title", nil);NSL
阅读全文
摘要:最近的一个项目中,要求在已有的界面上加入一个半透明的蒙板,提示用户界面上每个元素的功能。而且蒙板不是只有一页,要求可以左右滑动切换页面。简单的整理一下实现的思路:1. 既然是要显示半透明的蒙板图片,UIImageView肯定是少不了了。2. 要多页显示且能左右滑动,把UIImageView嵌入到UIScrollView中,并将UIScrollView的pagingEnabled属性设为YES,即可实现整页的滑动。3. 按当下流行的设计方案,图片滑动时,用点来表示当前页和总页数,这个就要用到UIPageControl控件了。4. 这些用于显示帮助的元素不应扰乱xib界面文件对页面的定义,所以使用
阅读全文
摘要:1. -(BOOL) isKindOfClass: <class> 判断该对象是否为<class>类或其子类的实例2. -(BOOL) isMemberOfClass: <class> 判断该对象是否为<class>类的实例3. -(BOOL) respondsToSelector: <selector> 判断该对象是否可响应<selector>函数4. +(BOOL) instancesRespondToSelector: <selector> 判断该类的实例是否可响应<selector>函数5.
阅读全文
摘要:1. 类中定义的@public, @private, @protected只影响继承它的类的访问权限。2. @property会为变量自动加上getter/setter方法。3. getter方法:1 -(id) name2 {3 return name;4 }4. setter方法:1 -(void) setName:(id)_name2 {3 if (name != _name)4 {5 [name release];6 name = [_name copy];// 设置了copy参数的情况7 }8 }5. @property...
阅读全文
摘要:首先声明,该模版借鉴自cocos2D。 获取Singleton类的对象时,调用的函数名称为:shared<ClassName>。废话不说,代码如下:// SingletonClass.m@implementation SingletonClassstatic SingletonClass* instance = nil;+(SingletonClass) sharedSingletonClass{ if (instance == null) { instance = [[SingletonClass alloc] init]; } return insta...
阅读全文

浙公网安备 33010602011771号