TTStyle的缩进实现

在写一些小的应用时候遇见一个需求,需要在view前面做一个list-type,显然需要一个小缩进,不知到three20有没有其他的解决方案,方正我处理方式是写另一个style。使用方法是这样的。

 [TTSolidFillStyle styleWithColor:color next: [TTAreaStyle styleWithRect:CGRectMake(0, 0, Indent, 18.0) style: [TTLinearGradientFillStyle styleWithColor1:RGBCOLOR(255, 255, 255) color2:RGBCOLOR(0, 0, 0) next:nil] next: [TTBoxStyle styleWithPadding:UIEdgeInsetsMake(0, Indent + Gap, 0, 0) next: [TTTextStyle styleWithFont:nil color:TTSTYLEVAR(linkTextColor) minimumFontSize:14 shadowColor:[UIColor colorWithWhite:255 alpha:0.4] shadowOffset:CGSizeMake(0, -1) textAlignment:UITextAlignmentLeft verticalAlignment:UIControlContentVerticalAlignmentCenter lineBreakMode:UILineBreakModeWordWrap numberOfLines:0 next:nil ]]]]; 

代码如下

//
//  TTAreaStyle.h
//  infzm
//
//  Created by lin waiwai on 1/19/11.
//  Copyright 2011 __waiwai__. All rights reserved.
//

@interface TTAreaStyle : TTStyle {
	CGRect _rect;
	TTStyle *_style;
}

@property (nonatomic, retain) TTStyle*  style;
@property (nonatomic) CGRect rect;

+(TTAreaStyle*)styleWithRect:(CGRect)rect style:(TTStyle*)stylez next:(TTStyle*)next;

@end
//
//  TTAreaStyle.m
//  infzm
//
//  Created by lin waiwai on 1/19/11.
//  Copyright 2011 __waiwai__. All rights reserved.
//

#import "TTAreaStyle.h"

// Core
#import "Three20Core/TTCorePreprocessorMacros.h"

@implementation TTAreaStyle

@synthesize rect  = _rect;
@synthesize style = _style;

///////////////////////////////////////////////////////////////////////////////////////////////////
- (void)dealloc {
	TT_RELEASE_SAFELY(_style);
	[super dealloc];
}

///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark -
#pragma mark Class public

///////////////////////////////////////////////////////////////////////////////////////////////////
+(TTAreaStyle*)styleWithRect:(CGRect)rect style:(TTStyle*)stylez next:(TTStyle*)next; {
	TTAreaStyle* style = [[[self alloc] initWithNext:next] autorelease];
	style.rect = rect;
	style.style = stylez;
	return style;
}

///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark -
#pragma mark TTStyle

///////////////////////////////////////////////////////////////////////////////////////////////////
- (void)draw:(TTStyleContext*)context {

	CGContextRef ctx = UIGraphicsGetCurrentContext();
	CGRect rect = context.frame;
	CGContextSaveGState(ctx);

	[context.shape addToPath:rect];
	CGContextClip(ctx);
	CGContextClipToRect(ctx,self.rect);
	[self.style draw:context];

	CGContextRestoreGState(ctx);

	return [self.next draw:context];
}

@end
Share
Posted in iphone at January 18th, 2011. 2 Comments.

稀缺资源的管理

在objective-c中,对稀缺资源的管理,如果文件描述符,网络链接,缓冲/缓存,有一些建议,如果你使用一个特别设计的类进行管理的话,那么你在释放这些资源的时候,也许假设这些资源的释放应该在dealloc中。但是实际上dealloc可能的调用可能被由于bug或者程序崩溃,延迟或者根本没有执行。

将这些东西的释放设计在dealloc中,有几点会让你蛋疼。

1,如果期望顺序的崩溃机制,这是不可能,只要在对象图中有一个进入个自动释放内存池中,那么崩溃的顺序改变了。

2,稀缺资源无法回收

3,如果有一个对象陷入内存池被释放,那么清理的逻辑无法正常执行,而其他线程可能已经在访问,这些都是致命行为。

所以最好的办法是,你设计的管理对象能够知道稀缺资源已经不在被使用了而马上将资源释放,接着释放对象自己。dealloc也会被正确的调用。

Share
Posted in iphone at December 4th, 2010. No Comments.

ipad 排版对齐

USA TODAY 的在新闻类app之中是我最喜欢的一个之一,我对于它其中的排版惊奇不已。

在来看看ibook吧,在英文上已经完全成功处理了。

在来对比一点研究成果

左侧栏完美的对齐。超乎想象,做一下性能测试先,待续吧,hope

Share
Posted in iphone at June 24th, 2010. No Comments.

iphone转移私钥

 

保存你的私钥,转移到其它系统

将你的私钥安全的保存,如果你需要在多台电脑上开发或者重装你的操作系统的。如果没有私钥,那么将无法再Xcode签名或者在apple设备上测试应用。当一个CSR被生成,Keychain Access应用在你的登录keychain里面生成一个私钥,这个私钥是和你的用户账户关联的,如果在系统重装的时候是无法重新生成的。如果你希望在多个系统上做开发或者测试,那么你需要在所有你工作的系统之上导入你的私钥。

1、  导出私钥和数字证书是为安全保存和能够在多台电脑上进行工作。打开Keychain Access应用选择’KEY’分类。

2、  右键点击和你iphone开发证书关联的私钥,并在弹出菜单中选择导出选项。

3、  使用(.p12)保存包含了你个人信息的钥匙。

4、  你将会被提示创建一个密码。

现在可以通过.p12文件在不同系统之间传输。双击.p12在其他系统上进行安装。输入你在step4输入的密码。

Share
Posted in iphone at May 23rd, 2010. No Comments.