iPhone的九宫格实现代码
效果图:
核心就这2个方法:
//Power by ieliwb.com
- ( void ) viewDidLoad {
[ super viewDidLoad ] ;
NSArray * imageNames = [ NSArray arrayWithObjects :
@ " ico_mobile.png " ,
@ " ico_idcard.png " ,
@ " ico_postcode.png " ,
@ " ico_flight.png " ,
@ " ico_translate.png " ,
@ " ico_phone.png " ,
@ " ico_car.png " ,
@ " ico_health.png " ,
@ " ico_bjxm.png " , nil ] ;
UIButton * Btn ;
for ( int i = 0 ; i < 9 ; i ++ ) {
CGRect frame ;
Btn = [[ UIButton buttonWithType : UIButtonTypeCustom ] retain ] ;
[ Btn setImage : [ UIImage imageNamed : [ imageNames objectAtIndex : i ]] forState : UIControlStateNormal ] ; //设置按钮图片
Btn . tag = i ;
frame . size . width = 59 ; //设置按钮坐标及大小
frame . size . height = 75 ;
frame . origin . x = ( i % 3 ) * ( 59 + 32 ) + 40 ;
frame . origin . y = floor ( i / 3 ) * ( 75 + 24 ) + 40 ;
[ Btn setFrame : frame ] ;
[ Btn setBackgroundColor : [ UIColor clearColor ]] ;
[ Btn addTarget : self action :@ selector ( btnPressed : ) forControlEvents : UIControlEventTouchUpInside ] ;
[ self . view addSubview : Btn ] ;
[ Btn release ] ;
}
}
//响应按钮事件
- ( void ) btnPressed : ( id ) sender {
UIButton * Btn = ( UIButton * ) sender ;
int index = Btn . tag ;
switch ( index ) {
case 0 :
if ( mobileController == nil )
mobileController = [[ MobileController alloc ] init ] ;
[ self . navigationController pushViewController : mobileController animated : YES ] ;
break ;
//其他几个控制器类似
}
}
- ( void ) viewDidLoad {
[ super viewDidLoad ] ;
NSArray * imageNames = [ NSArray arrayWithObjects :
@ " ico_mobile.png " ,
@ " ico_idcard.png " ,
@ " ico_postcode.png " ,
@ " ico_flight.png " ,
@ " ico_translate.png " ,
@ " ico_phone.png " ,
@ " ico_car.png " ,
@ " ico_health.png " ,
@ " ico_bjxm.png " , nil ] ;
UIButton * Btn ;
for ( int i = 0 ; i < 9 ; i ++ ) {
CGRect frame ;
Btn = [[ UIButton buttonWithType : UIButtonTypeCustom ] retain ] ;
[ Btn setImage : [ UIImage imageNamed : [ imageNames objectAtIndex : i ]] forState : UIControlStateNormal ] ; //设置按钮图片
Btn . tag = i ;
frame . size . width = 59 ; //设置按钮坐标及大小
frame . size . height = 75 ;
frame . origin . x = ( i % 3 ) * ( 59 + 32 ) + 40 ;
frame . origin . y = floor ( i / 3 ) * ( 75 + 24 ) + 40 ;
[ Btn setFrame : frame ] ;
[ Btn setBackgroundColor : [ UIColor clearColor ]] ;
[ Btn addTarget : self action :@ selector ( btnPressed : ) forControlEvents : UIControlEventTouchUpInside ] ;
[ self . view addSubview : Btn ] ;
[ Btn release ] ;
}
}
//响应按钮事件
- ( void ) btnPressed : ( id ) sender {
UIButton * Btn = ( UIButton * ) sender ;
int index = Btn . tag ;
switch ( index ) {
case 0 :
if ( mobileController == nil )
mobileController = [[ MobileController alloc ] init ] ;
[ self . navigationController pushViewController : mobileController animated : YES ] ;
break ;
//其他几个控制器类似
}
}
九宫格背景修改可以这样实现:
-
(
void
)
loadView
{
UIImageView * contentView = [[ UIImageView alloc ] initWithFrame : [[ UIScreen mainScreen ] applicationFrame ]] ;
[ contentView setImage : [ UIImage imageNamed :@ " subview_9_bg.png " ]] ;
[ contentView setUserInteractionEnabled : YES ] ;
self . view = contentView ;
[ contentView release ] ;
}
UIImageView * contentView = [[ UIImageView alloc ] initWithFrame : [[ UIScreen mainScreen ] applicationFrame ]] ;
[ contentView setImage : [ UIImage imageNamed :@ " subview_9_bg.png " ]] ;
[ contentView setUserInteractionEnabled : YES ] ;
self . view = contentView ;
[ contentView release ] ;
}
UINavigationBar背景图片可以这样实现:
@
implementation
UINavigationBar
(
CustomImage
)
- ( void ) drawRect : ( CGRect ) rect {
UIImage * image = [ UIImage imageNamed : @ " top_bg.png " ] ;
[ image drawInRect : CGRectMake ( 0 , 0 , self . frame . size . width , self . frame . size . height )] ;
}
@ end
- ( void ) drawRect : ( CGRect ) rect {
UIImage * image = [ UIImage imageNamed : @ " top_bg.png " ] ;
[ image drawInRect : CGRectMake ( 0 , 0 , self . frame . size . width , self . frame . size . height )] ;
}
@ end