随笔分类 -  ios

摘要:如果我们要检测app版本的更新,那么我们必须获取当前运行app版本的版本信息和appstore 上发布的最新版本的信息。当前运行版本信息可以通过info.plist文件中的bundle version中获取:1 NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary]; 2 3 NSString *appVersion = [infoDic objectForKey:@"CFBundleVersion"]; 这样就获取到当前运行的app的版本了要获取当前app store上的最新的版本,有两种方法,一、在某 阅读全文
posted @ 2014-02-24 20:43 ubersexual 阅读(449) 评论(0) 推荐(1)
摘要:在iOS 5.0以前,我们在一个UIViewController中这样组织相关的UIView在以前,一个UIViewController的View可能有很多小的子view。这些子view很多时候被盖在最后,我们在最外层ViewController的viewDidLoad方法中,用addSubview增加了大量的子view。这些子view大多数不会一直处于界面上,只是在某些情况下才会出现,例如登陆失败的提示view,上传附件成功的提示view,网络失败的提示view等。但是虽然这些view很少出现,但是我们却常常一直把它们放在内存中。另外,当收到内存警告时,我们只能自己手工把这些view从sup 阅读全文
posted @ 2014-02-19 14:58 ubersexual 阅读(357) 评论(0) 推荐(0)
摘要:1.很早就看到项目里面有下面这样的写法1 - (id) initWithTitle:(NSString *)title items:(MXContextMenuItem *)item, ... NS_REQUIRES_NIL_TERMINATION; 2.查了点资料,自己练习了下,试着写了个 1 //.h 2 - (NSString *)addMoreArguments:(NSString *)firstStr,...NS_REQUIRES_NIL_TERMINATION; 3 4 //.m 5 - (NSString *)addMoreArguments:(NSStrin... 阅读全文
posted @ 2014-01-19 21:11 ubersexual 阅读(1234) 评论(0) 推荐(0)
摘要:文字属性textplaceholder //默认使用70%灰色 font textColor textAlignment文字大小adjustsFontSizeToFitWidthminimumFontSize编辑行为editing //是否正在编辑(read-only)clearsOnBeginEditing展现形态borderStyle //默认UITextBorderStyleNone,是UITextBorderStyleRoundedRect时自定义的background无效backgrounddisabledBackgroundproperty //backgrou... 阅读全文
posted @ 2014-01-08 16:32 ubersexual 阅读(308) 评论(0) 推荐(0)
摘要:默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp。Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下;Library:存储程序的默认设置或其它状态信息;tmp:提供一个即时创建临时文件的地方。iTunes在与iPhone同步时,备份所有的Documents和Library文件。iPhone在重启时,会丢弃所有的tmp文件。 1 //取得Documents路径的方法: 2 - (NSString *)documentFolder { 3 //-----------------------方式一--------------... 阅读全文
posted @ 2014-01-01 23:26 ubersexual 阅读(394) 评论(0) 推荐(0)
摘要:在iOS 5.0以前,我们在一个UIViewController中这样组织相关的UIView在以前,一个UIViewController的View可能有很多小的子view。这些子view很多时候被盖在最后,我们在最外层ViewController的viewDidLoad方法中,用addSubview增加了大量的子view。这些子view大多数不会一直处于界面上,只是在某些情况下才会出现,例如登陆失败的提示view,上传附件成功的提示view,网络失败的提示view等。但是虽然这些view很少出现,但是我们却常常一直把它们放在内存中。另外,当收到内存警告时,我们只能自己手工把这些view从sup 阅读全文
posted @ 2013-11-29 00:45 ubersexual 阅读(494) 评论(0) 推荐(0)
摘要:使用之前请从Apple网站下载示例:点此下载然后将Reachability.h 和Reachability.m 加到自己的项目中,并引用SystemConfiguration.framework,就可以使用了。Reachability 中定义了3种网络状态 1 // the network state of the device for Reachability 1.5. 2 typedef enum { 3 NotReachable = 0, //无连接 4 ReachableViaCarrierDataNetwork, //使用3G/GPRS网络 5 Reacha... 阅读全文
posted @ 2013-11-14 09:08 ubersexual 阅读(257) 评论(0) 推荐(0)
摘要:1 //对图片尺寸进行压缩-- 2 -(UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize 3 { 4 // Create a graphics image context 5 UIGraphicsBeginImageContext(newSize); 6 7 // Tell the old image to draw in this new context, with the desired 8 // new size 9 [image drawInRec... 阅读全文
posted @ 2013-11-06 17:23 ubersexual 阅读(358) 评论(0) 推荐(0)
摘要:最近在做一个UITableView的例子,发现滚动时的性能还不错。但来回滚动时,第一次显示的图像不如再次显示的图像流畅,出现前会有稍许的停顿感。于是我猜想显示过的图像肯定是被缓存起来了,查了下文档后发现果然如此。后来在《Improving Image Drawing Performance on iOS》一文中找到了一些提示:原来在显示图像时,解压和重采样会消耗很多CPU时间;而如果预先在一个bitmap context里画出图像,再缓存这个图像,就能省去这些繁重的工作了。接着我就写了个例子程序来验证: 1 // ImageView.h 2 3 #import 4 5 6 @inte... 阅读全文
posted @ 2013-10-16 16:00 ubersexual 阅读(393) 评论(0) 推荐(0)
摘要:1,修改状态栏的样式和隐藏。首先,需要在Info.plist配置文件中,增加键:UIViewControllerBasedStatusBarAppearance,并设置为YES;然后,在UIViewController子类中实现以下两个方法:1 - (UIStatusBarStyle)preferredStatusBarStyle2 {3 return UIStatusBarStyleLightContent;4 }5 6 - (BOOL)prefersStatusBarHidden7 {8 return NO;9 }最后,在需要刷新状态栏样式的时候,调用[self setNe... 阅读全文
posted @ 2013-10-15 17:32 ubersexual 阅读(529) 评论(0) 推荐(0)
摘要:最近两天在研究ios的消息推送机制。研究这个东西,还是充满兴趣的。Push的原理:Push 的工作机制可以简单的概括为下图图中,Provider是指某个iPhone软件的Push服务器,这篇文章我将使用.net作为Provider。APNS 是Apple Push Notification Service(Apple Push服务器)的缩写,是苹果的服务器。上图可以分为三个阶段。第一阶段:.net应用程序把要发送的消息、目的iPhone的标识打包,发给APNS。第二阶段:APNS在自身的已注册Push服务的iPhone列表中,查找有相应标识的iPhone,并把消息发到iPhone。第三阶段:i 阅读全文
posted @ 2013-10-14 23:27 ubersexual 阅读(293) 评论(0) 推荐(0)
摘要:在《Objective C类方法load和initialize的区别》一文中,我介绍了Objective-C对待+(void)initialize和+(void)load两个方法在编译和执行时出现的不同。而这些不同也是在使用时应该非常注意的地方。不过文章里面我没有讲这两个方法在Objective-C中究竟有什么实用价值。其实+(void)initialize可以视为C#,Java中的静态构造函数。有了这个方法,我们就不用像C++自己另找途径来设计静态构造函数了。不过Objective-C中又有一些很不同的地方,因为Objective-C里不能把数据成员限定为static或者const。也就是说 阅读全文
posted @ 2013-09-25 21:45 ubersexual 阅读(314) 评论(0) 推荐(0)
摘要:NSObject中有非常特别的两个类方法(Class Method)。它们的特别之处,在于iOS会在运行期提前并且自动调用这两个方法,而且很多对于类方法的规则(比如继承,类别(Category))都有不同的处理。而因为这两个方法是在程序运行一开始就被调用的方法,我们可以利用他们在类被使用前,做一些预处理工作。比如我碰到的就是让类自动将自身类名保存到一个NSDictionary中。先来看看NSObject Class Reference里对这两个方法说明:+(void)initializeThe runtime sendsinitializeto each class in a program 阅读全文
posted @ 2013-09-25 21:39 ubersexual 阅读(220) 评论(0) 推荐(0)
摘要:1.sortedArrayUsingSelector(按Key值大小对NSDictionary排序)1 NSMutableArray *array = [NSMutableArray arrayWithObjects:2 [NSDictionary dictionaryWithObjectsAndKeys:@"Obj0", [NSNumber numberWithInt:0], nil],3 [NSDictionary dictionaryWithObjectsAndKeys:@... 阅读全文
posted @ 2013-09-22 10:20 ubersexual 阅读(735) 评论(0) 推荐(0)
摘要:Cocoa: NSOperation和NSOperationQueue 在任何语言中多线程处理都是麻烦的。更糟糕的是如果出错了往往会以很坏的方式出错。鉴于此,程序员要么完全避免使用多线程(把它当做邪恶之源),要么发很长的时间来确保每个方面都很完美。 庆幸的是,Apple在OS X 10.5 Leopard上做了很多改进。NSThread本身就新增了很多新的方法,从而使得多线程变得更加容易。此外还新增了NSOperation和NSOperationQueue两个类。该教程通过一个简单的实例来介绍如何使用这些新增类并如何让多线程的应用变得小菜一碟。 你可以从此获取该项目的实例代码:Async D. 阅读全文
posted @ 2013-09-17 16:19 ubersexual 阅读(257) 评论(0) 推荐(0)
摘要:1.效率肯定是delegate比nsnotification高。2. delegate方法比notification更加直接,最典型的特征是,delegate方法往往需要关注返回值, 也就是delegate方法的结果。比如-windowShouldClose:,需要关心返回的是yes还是no。所以delegate方法往往包含 should这个很传神的词。也就是好比你做我的delegate,我会问你我想关闭窗口你愿意吗?你需要给我一个答案,我根据你的答案来决定如何做下一 步。相反的,notification最大的特色就是不关心接受者的态度, 我只管把通告放出来,你接受不接受就是你的事情,同时我也 阅读全文
posted @ 2013-09-12 18:35 ubersexual 阅读(300) 评论(0) 推荐(0)
摘要:CALayer(这里简单地称其为层,与photoshop里的层类似)。 首先要说的是CALayers 是屏幕上的一个具有可见内容的矩形区域,每个UIView都有一个根CALayer,其所有的绘制(视觉效果)都是在这个layer上进行的。CALayer可以影响UIView的外观的特性有: 层的大小尺寸背景色内容(比如图像或是使用Core Graphics绘制的内容)是否使用圆角是否使用阴影等等。需要说明的是CALayer的大部分属性都可以用来实现动画效果。另外,你可以直接使用CALayer,也可以使用其子类,如CAGradientLayer,CATextLayer, CAShapeLay... 阅读全文
posted @ 2013-08-27 21:01 ubersexual 阅读(842) 评论(0) 推荐(0)
摘要:Notification是智能手机应用编程中非常常用的一种传递信息的机制,而且可以非常好的节省资源,不用消耗资源来不停地检查信息状态(Pooling),在iOS下应用分为两种不同的Notification种类,本地和远程。本地的Notification由iOS下NotificationManager统一管理,只需要将封装好的本地Notification对象加入到系统Notification管理机制队列中,系统会在指定的时间激发将本地Notification,应用只需设计好处理Notification的方法就完成了整个Notification流程了。本地Notification所使用的对象是UI 阅读全文
posted @ 2013-08-27 19:26 ubersexual 阅读(320) 评论(0) 推荐(0)
摘要:代码 1 - (void)viewDidLoad 2 { 3 [super viewDidLoad]; 4 5 UIButton * button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 6 [button setTitle:@"哈哈哈" forState:UIControlStateNormal]; 7 [self.view addSubview:button]; 8 9 //1. 关闭autoresize自动翻译10 button.translatesAutore... 阅读全文
posted @ 2013-08-27 19:14 ubersexual 阅读(658) 评论(0) 推荐(0)
摘要:一.通过弹出控制器,获取本地音乐列表,然后播放。该方法类似于UIImagePickerController。导入MediaPlayer.framework框架。1 -(void)musicInit{2 //创建播放器控制器3 MPMediaPickerController *mpc = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeAnyAudio];4 //设置代理5 mpc.delegate = self;6 [self presentViewController:mpc... 阅读全文
posted @ 2013-08-27 18:15 ubersexual 阅读(4878) 评论(0) 推荐(0)