iOS关于RunLoop和Timer

摘要: RunLoop这个东西,其实我们一直在用,但一直没有很好地理解它,或者甚至没有知道它的存在。RunLoop可以说是每个线程都有的一个对象,是用来接受事件和分配任务的loop。永远不要手动创建一个runloop,它是跟随着每个线程的。一个RunLoop接收两种source的事件:input source和timer source。同时必须知道的是,input source,runloop是异步交付的,而timer source是同步交付的。每个runloop都有一个RunLoop Modes,代表它以何种方式执行。 我们为什么从来没有感觉到runloop的存在呢,是因为当程序启动,系统默认... 阅读全文
posted @ 2013-08-25 23:35 VicStudio 阅读(9138) 评论(1) 推荐(0) 编辑

iOS关于应用内分享

摘要: iOS7.0增加了AirDrop功能,可知在未来,手机信息资源的直接分享会越来越重要。而我们在iPhone系统短信点击照片会看到右上角的分享按钮,点击可以弹出一系列的应用菜单,允许用户把这张图片分享到其他应用。下面谈谈怎样让自己的应用出现在这个全局菜单。当然,这要应用内部手动设置支持。如图:(7.0的分享菜单)(在IOS6.0分别在message和safari支持的全局分享调用)设定应用支持的全局分享设置,在plist添加下面代码: CFBundleDocumentTypes CFBundleTypeName ShareIm... 阅读全文
posted @ 2013-08-18 17:42 VicStudio 阅读(3799) 评论(0) 推荐(1) 编辑

iOS内存错误EXC_BAD_ACCESS的解决方法(message sent to deallocated instance)

摘要: iOS开发,最郁闷的莫过于程序毫无征兆地就崩溃了,用bt命令打出调用栈,给出的是一堆系统EXC_BAD_ACCESS的信息,根本没办法定位问题出现在哪里。通常这样的崩溃出现,原因一般就是:调用了已经释放的内存空间,或者说重复释放了某个地址空间。而怎样定位到这个地址呢,可以通过编辑xcode的scheme,添加如下标记位,让系统把错误地址打印出来,如图:(通过Product->Scheme->Edit Scheme进入下面编辑页面,选中Arguments tab,增加标计位NSZombieEnabled设为YES)这样,但崩溃出现,系统会出现以下提示信息:2013-06-23 00: 阅读全文
posted @ 2013-06-23 01:14 VicStudio 阅读(17488) 评论(0) 推荐(1) 编辑

iOS国际化和genstrings所有子目录本地化字符串

摘要: 最近在忙着一个国外项目,天天加班,没时间更新博客。就简单讲讲国际化的知识。 首先,我们使用字符串,必须用NSLocalizedString(key,comment),这样我们在不同的Localizable.strings对key指定不同的值,系统会根据当前系统语言,去不同的lproj找不同的字符串。用个图显示吧:我们应用只支持中文,英文,所以只建了zh-Hans.lproj和en.lproj,然后在Localizable.strings指定了不同的值。举例如下:这样程序就能根据系统语言,去选择“登录”还是“Log In”。 但是如果每次加了一个本地化字符串,就得手动去Localiz... 阅读全文
posted @ 2013-06-20 23:36 VicStudio 阅读(1605) 评论(0) 推荐(0) 编辑

iOS基础界面和导航详解

摘要: iOS基础界面就是通过UIViewController展示的。首先区分content controller和container controller的区别。content controlller就是展示我们当前页面的controller,而container controller就是一个管理content controller的容器,基本就是UINavigationController和UITabbarController,本身它也是继承UIViewController,一个UIViewController压栈就是把它加入到container controller的view上。下面说一下UIV 阅读全文
posted @ 2013-06-16 00:46 VicStudio 阅读(1502) 评论(0) 推荐(0) 编辑

iOS处理通话或录音状态中界面错乱的重布局

摘要: 可以知道的是,iphone设备在通话或录音状态中,状态栏下移了20个像素,这时controller的view的frame的高度就减少了20个像素,所以我们需要根据view的frame去布局子view。但是可恨的是,当状态栏还原回去的时候,系统并没有帮我们还原回去。试了一下微信跟陌陌,都有这个问题:(下面暴露的有关人员,不是故意的哈,不要追究我的责任) 看了一下UIViewController的api,发现在ios5.0以后多增加了两个函数:- (void)viewWillLayoutSubviews - (void)viewDidLayoutSubviews 试了一下,发现如果一个Contr. 阅读全文
posted @ 2013-06-14 19:55 VicStudio 阅读(2426) 评论(0) 推荐(0) 编辑

iOS用图片设置背景颜色colorWithPatternImage

摘要: 有时候UI给的背景都是一张图,而我们并不想刻意去插入一个UIImageView作为背景,这里就直接可以用一张图来填充背景: UIImage *bgImage = [UIImageimageWithContentsOfFile:@"...\background.png"]; UIColor *bgColor = [UIColor colorWithPatternImage:bgImage]; self.backgroundColor =bgColor;但是如果在4.3系统,如果这张背景图是有阴影或透明效果,就会看到透明或阴影的地方变成黑色了。所以需要手动设置一下不透明度: s 阅读全文
posted @ 2013-06-13 00:16 VicStudio 阅读(5269) 评论(0) 推荐(0) 编辑

关于hitTest和UIResponder

摘要: 今天仔细看了一下UIView和UIResponder的介绍,着重看了一下hitTest的介绍。首先是官方的:-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event1.我们都知道,一个屏幕事件由响应链一步步传下去。这个函数返回的view就是可以让你决定在这个point的事件,你用来接收事件的view。当然,如果这个point不在你的view的范围,返回nil。2.这个函数忽略userInteractionEnabled,hidden,alpha<0.01,也就是你一个view隐藏或什么了,还是可以作为接收者。3.调用次序是从 阅读全文
posted @ 2013-06-12 23:50 VicStudio 阅读(2788) 评论(1) 推荐(2) 编辑

iOS禁止输入emoji表情

摘要: 因为emoji编码在android或者pc设备没有很好的支持,所以有时候为了禁止emoji表情的输入,因为关闭不了系统emoji的键盘,那只能根据编码把emoji表情过滤掉,写了一个NSString的拓展,用来判断是不是emoji编码:@implementation NSString(Emoji)+(BOOL)isContainsEmoji:(NSString *)string { __block BOOL isEomji = NO; [string enumerateSubstringsInRange:NSMakeRange(0, [string length]) options:N... 阅读全文
posted @ 2013-05-30 22:10 VicStudio 阅读(5031) 评论(1) 推荐(0) 编辑

iOS把经纬度反转为位置信息(街道名等)

摘要: 最近做应用用到定位,位置信息可以很容易由CLLocationManager得到(得到的经纬度在中国有偏移,需要纠偏)。但是怎么把特定经纬度的位置信息得到呢,查看了一下资料,发现了CLGeocoder这个类,可以把经纬度反转为位置信息。代码如下:-(void)reverseGeocodeForLocation:(CLLocationCoordinate2D)coordinate{ CLLocation *loacation = [[[CLLocation alloc] initWithLatitude:coordinate.latitudelongitude:coordinate.longit. 阅读全文
posted @ 2013-05-29 22:54 VicStudio 阅读(1027) 评论(0) 推荐(0) 编辑