iOS系列教程之TextKit实现图文混排读后记

前两天看搜狐家明哥写的《TextKit实现图文混排》 今晚回家看了下API发现了一个更加取巧的实现方式.可以直接将后台返回的html富文本用textView显示出来. 记得两年前当时做这个的时候还是借助了笨重的webview.

> Textkit是iOS7新推出的类库,其实是在之前推出的CoreText上的封装,有了这个TextKit,以后不用再拿着CoreText来做累活了, 下面是我分别用UITextView 和UIWebView 显示一段图文混合的文字

iOS系列教程之常见开发Tips

开发技巧和常见错误汇总,不定期更新中,也欢迎大家总结跟帖

1:ARC下NSNotificationCenter需要remove

- (void) dealloc 
{
	//  [super dealloc] 千万不要画蛇添足    
	[[NSNotificationCenter defaultCenter] removeObserver:self]; 
}

iOS系类教程之用instruments来检验你的app

比较了好多关于instruments 还是发现老外写的比较牛逼.于是果断翻译过来.有能力的的可以去看英文原版,鼓励大家看原版资料远离二手教程 http://www.raywenderlich.com/23037/how-to-use-instruments-in-xcode

入门

为了节省大家的时间,提供一个演示的Demo给大家.代码传送门. 下载后解压然后用xcode打开. 编译运行APP后 然后在搜索框内输入任意词汇,点击结果你会看到下面的结果

ARC下block,weak,unsafe_unretained

最近把项目转到ARC 下了,之前__block 之前总结过一篇关于 block 的文章,有兴趣的童鞋可以去看下.

ios UIKit Dynamics 系列教程之Gravity+Collision

ios7推出好久了,但是最近忙着工作的时间现在才抽时间自己看了WWDC2013,很是惭愧.最客户端其实最有趣的莫过于动画.ios7给我最大的惊喜就是UIKit Dynamics的到来,想想两年前写招行掌上生活首页的时候,那时候没有现成的物理引擎,写的动画非常生硬,套用现在流行的话就是"既视感"不强.

如何建立基于CocoaPods的ReactiveCocoa工程

ReactiveCocoa 和 CocoaPods 一样也是目前很流行的 能方便和提高效率的框架.

iOS 开发之 CocoaPods讲解

什么是CocoaPods?

看看你的项目吧,肯定会用到很多第三方的开源库,比如ASI,SBJson,MBProgressHUD等等.

iOS开发之你真的了解了KVC吗?

之前一直以为自己了解KVC 其实只是井底之蛙啦,真正的要把KVC原原本本的说出来还真的不是一件简单的事情。于是今天写下这边文章,告诫自己要知其然还要知其所以然。

iOS7之Sprite Kit vs Cocos2D

Xcode5正式版发布了,全新的ui当然带来了全新的功能。今天阿峰就给大家来介绍下Sprite Kit。

iOS开发之MPNowPlayingInfoCenter 锁屏显示正在播放的音乐

今天在床上玩唱吧,听着歌锁屏了,当点亮屏幕的时候,锁屏页面出现了我正在听得歌曲 壁纸也换成了唱吧里面的歌手图片.做ios好几年了,从没有做过这个需求 于是好奇就翻看ios的API文档找到了这个类.

阿里iOS面试题之多线程选用NSOperation or GCD

今天早上接到了阿里从杭州打过来的电话面试.虽然近期面试了一些大中型的互联网企业,但是跟素有"IT界的黄浦军校"的阿里面试官接触还是不免紧张.

再谈涉及模式

某某曰:设计模式这东西,没有好坏之分,只有合适于不合适

What is the difference between Category and Class Extension?

细心的人会发现当我们new 一个文件的时候会发现下图的部分.

但是这个问题来了Category 和 Extension 就近又什么区别呢?

ios笔记-- 多线程应该知道的那几件事 GCD NSThread NSOperation

iphone5s 出来了,CPU 升级到了64位 可以应用到更大的内存了,同时对多线程的处理吞吐能力也教之前提升了十几倍。下面着中总结下ios 下多线程的知识点

ios笔记--block应该知道的那几件事

block 现在已经基本上已经使用非常普遍了,在引用中也又很多坑,下面把block开发中应该知道的那几件事总结下.

mac 下更新DNS 缓存

开始的时候难免遇到修改host的时候,但是host后没有即刻生效,可使用终端命令手动清除DNS缓存:

dscacheutil -flushcache

判断地图坐标是否在区域内

此方法与前一篇文章中的得到UIView某点的色值达到的效果一直,通常为了保持精度 两个方法一起使用。

How to get the color of a pixel in an UIView?

记得一年前做招行掌上生活M+的时候 其中有个需求是画一画功能,就是在地图上用手指画个圈 然后得到这个圈里面所有指定商户。 当时为了精度 除了利用

BOOL mapCoordinateIsInPolygon = CGPathContainsPoint(polygonView.path, NULL, polygonViewPoint, NO);

来验证此点是否在画的区域内 同时为了精度 还用到了点位的颜色色值进行校验。

无法把全部代码给出 下面把 如何得到uiview 某点的函数给出

UIView+ColorOfPoint.h

@interface UIView (ColorOfPoint)
- (UIColor *) colorOfPoint:(CGPoint)point;
@end

UIView+ColorOfPoint.m

#import "UIView+ColorOfPoint.h"
#import <QuartzCore/QuartzCore.h>

@implementation UIView (ColorOfPoint)

- (UIColor *) colorOfPoint:(CGPoint)point
{
    unsigned char pixel[4] = {0};
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGContextRef context = CGBitmapContextCreate(pixel, 1, 1, 8, 4, colorSpace, kCGImageAlphaPremultipliedLast);

    CGContextTranslateCTM(context, -point.x, -point.y);

    [self.layer renderInContext:context];

    CGContextRelease(context);
    CGColorSpaceRelease(colorSpace);

    //NSLog(@"pixel: %d %d %d %d", pixel[0], pixel[1], pixel[2], pixel[3]);

    UIColor *color = [UIColor colorWithRed:pixel[0]/255.0 green:pixel[1]/255.0 blue:pixel[2]/255.0 alpha:pixel[3]/255.0];

    return color;
}

@end

MAC OS X 下快速切换代理

因为行业原因 在公司上网必须通过代理安装,所以每天上下班开电脑第一件事 就是开关代理。于是做了一个软件 利用shell进行切换代理。

在Finder标题栏上显示完整路径

打开终端,输入以下命令并回车:

defaults write com.apple.finder _FXShowPosixPathInTitle -bool YES

然后再把finder关了再打开,你会发现路径栏变成这个样子了:

Block 定时器 让我们解放了

Block 没有出现前 ios写个定时器太麻烦了,好在Block的让我们小爽了一把,以后写timer 简单的要命了

如何得到中英文混合下的NSString的长度?

这个貌似很简单但却是把我跟招行的兄弟难为了好久,为毛?还不是因为招行信用卡中心的网络无法连接外网无法谷歌度娘最后我们只能查看文档写test 下面是最后我们得到的两个方法

(NSDate) 时间 (time )比较

做订餐app时对下单时间的时间判断 下面是规则

  • 9:00-14:00 可以订餐
  • 14:00以后掌上餐厅仅接收晚餐订餐
  • 21:00以后掌上餐厅不接收订餐

善用 NSAutoreleasePool 节约宝贵内存

autorelease自动释放内存,并不会立即把内存释放掉,而是要等到下一个事件周期才会释放掉。问题是一些资源我们不得不使用autorelease类型,比如作为函数的返回值,而且系统api及项目是的大部分也都是这么做的,如果全都依靠我们手动释放很容易造成内存泄漏。

如何禁用禁用uwebiview 的反弹功能(bounces)

UIWebView默认允许当网页内容处于最顶端时,用户可以用手指往下拖动,露出空白的背景 如何禁用呢 // iOS 5之前

for (id subview in webView.subviews)
  if ([[subview class] isSubclassOfClass: [UIScrollView class]])
    ((UIScrollView *)subview).bounces = NO;

// iOS 5+

webView.scrollView.bounces = NO;

如何清空 NSUserDefaults 下所有数据

每个app 难免要在NSUserDefaults中记一些数据,但这些数据某些清空下药全部清空,比如系统版本升级啦,后台存储数据结构变更啦

银行支付控件之 自动随机(shuffle)密码键盘的实现算法

为了广大用户的支付安全,输入密码的页面密码键盘要用随机排序,因为有版权问题无法把自己写的代码全部贴出 所以下面只把关键的洗牌算法贴出来

算法一

NSMutableArray *randSequence = [[NSMutableArray alloc] initWithCapacity:8];
for (int ii = 0; ii < 10; ++ii)
    [randSequence addObject:[NSNumber numberWithInt:ii]];

for (int ii = 9; ii > -1; --ii) {
    int r = arc4random() % 9
    [randSequence exchangeObjectAtIndex:ii withObjectAtIndex:r];

算法二

@interface NSMutableArray (Shuffling)
- (void)shuffle;
@end


//  NSMutableArray_Shuffling.m

#import "NSMutableArray_Shuffling.h"

@implementation NSMutableArray (Shuffling)

- (void)shuffle
{
    NSUInteger count = [self count];
    for (NSUInteger i = 0; i < count; ++i) {
        // Select a random element between i and end of array to swap with.
        NSInteger nElements = count - i;
        NSInteger n = (arc4random() % nElements) + i;
        [self exchangeObjectAtIndex:i withObjectAtIndex:n];
    }
}

@end

mac 下的默认配置

请几天安装其他的shell 结果把默认的shell更改了 有没有快捷的方法更换会默认配置

Xcode的持续集成指南

采用持续集成工作流

设置MAC作为服务器,在其上运行Xcode的服务。然后确保你的本地项目,发布源代码库。要完成设立一个持续集成的工作流程,配置的机器人,不知疲倦地进行集成和时间表。

xcode 5.0 的持续继承

> Xcode的支持持续集成通过Xcode的服务流程。Xcode的服务,可在OS X服务器,自动一体化建设过程中,您的应用程序的分析,测试和归档。

快速清除subviews之 隐私循环

问:如何快速把当前view下的所有子view 及其子子view们删除掉

ios 通过当前view得到所在的viewcontroller

long long ago ,带过的小弟遇到了一个问题,需要从当前的控件(一般是uiview)获取当前所在的viewcontroller

removeFromSuperview添加动画使其更加高雅美观

程序中难免使用removeFromSuperview,但是view控件直接从界面突然消失会显得非常不友好,作为一个高端大气上档次的app细节处处应该注意,

ios 清理工程中没有用到的图片

发布前往往需要清理工程中没有用到的图片,这些图片可能是测试图片也可能是以往版本中替换遗留下来的图片

ios 笔记之 内购

昨晚同事拿了一个app 发现其app 内部页面打开了appstore 并没有唤起手机自带的appstore, 刚开始以为是用webview 加载的

ios 开发笔记之图片 Image

关于图片资源

ios 程序会把图片资源编译成二进制文件,程序运行时会把这些图片从磁盘加载直接到内存,如果图片很大,加载速度就会很慢。