#iOS

写在前面

在网上看到很多类似的iOS开源库定期分享类文章,觉得非常实用,其实,我自己平时在开发中也不时看到有很不错的资源,但是经常是没有用到就没记录下来,后来想用的时候就可能想不起来找不到了,因此现在也用这种形式记下来方便自己查找,同时也分享给大家。

效果预览

screenshot.gif

使用MPVolumeView时 system volume progress view 则不会出现, 不过如果有时想同时出现自己定制的volume bar和 system volume progress view时,这时就不能使用MPVolumeView了,需要自己使用UISlider自定义UI和关联逻辑进行实现。

iOS6开始就引入了autolayout特性,使用autolayout进行自动布局确实方便了很多,下面是autolayout使用的一些心得。

所有frame的高度和宽度应该通过superview的bounds计算。
xib中的view无法设置auto mask的必须通过代码设,不设定的话有时可以自动适应,但是有时会出现有部分黑屏的情况。
两边都不设置mask则为居中显示。

以下两方法为rotate是自动调用,如果该viewController没有navigationController时,以下两方法可能不被调用,需要自己加入通知中心。

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation

调用此方法时superview.bounds已经改变

设置背景图片

	UIImage *textFieldBgImage = [[UIImage imageNamed:@"textfield_bg.png"] stretchableImageWithLeftCapWidth:5 topCapHeight:5];
	[self.textField setBackground:textFieldBgImage];

最近项目中用到的接口是.net写的,传过来的日期格式是 2013-04-10T10:36:48.787359+08:00 , 这么一大串想解析成NSDate格式还真不是一件容易的事,幸好已经有人把转换类写出来了。

从第一篇文章我们知道了如何通过sencha命令创建Sencha Touch项目,而创建的项目里面已经包含了不少文件,如要开始写代码,我们有必要先了解所创建项目的文件结构及代码。

类的定义

Sencha Touch有自己的类定义方式,我们先来看个例子:

	Ext.define('Animal', {
        config: {
            name: null
        },
     
        constructor: function(config) {
            this.initConfig(config);
        },
     
        speak: function() {
            alert('grunt');
        }
    });

上面我们简单地定义了一个Animal类,只有一个name属性和一个方法speak();