内容提要:UI界面的特别处理技巧二
   
一、 问题说明: 修改标签管理器标签和视图控制器标题不一样


使用标签管理器来管理导航控制器,
 
    //self.title = @"home”;//当前视图的title(上面标题)
 
     
 //self.navigationItem.title = @"home"; 
 
      
 // 
 上述方法无效,要找准层级关系 
//标签管理器的子控制器是导航管理器
 
          //当前视图所对应的TabBarItem的标题(下面的标题)
 
self.navigationController.tabBarItem.title = @"home1";





二、视图控器继承实现风格相似


          在使用导航控制器的时候,导航控制器管理许多个子视图控制器,如果这些子控制器的页面风格是相似的,我们可以设置一个父类,使这些子控制器都继承与这个父类,如设置一个BaseViewController类,在其viewDidLoad实现如下的操作


//如下的操作使每一个子视图的背景图片都一致
 
- ( 
 void 
 )viewDidLoad {
 
    //子类也会这样调用,这样可以使一部分样式与父类相同
 
super  
 viewDidLoad 
 ];
 
      
 UIImage  
 *img = [ 
 UIImage  
 imageNamed 
 : 
 @"bj.jpg" 
 ];
 
UIGraphicsBeginImageContext(CGSizeMake(kScreenWidth, kScreenHeight));
 
    [img  
 drawInRect 
 :[ 
 UIScreen  
 mainScreen 
 ]. 
 bounds 
 ];
     img =  
 UIGraphicsGetImageFromCurrentImageContext 
 ();
      
 UIGraphicsEndImageContext 
 (); 
self.view.backgroundColor = [UIColor colorWithPatternImage:img];
 
}








三、设置项目全局的导航栏样式

//注意:所有带UI_APPEARANCE_SELECTOR宏修饰的方法都可以全局设置
 
     
 // 
 创建导航控制器
 
UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:rootVC];
 
     
 //处理图片
 
     
 UIImage  
 *img = [ 
 UIImage  
 imageNamed 
 : 
 @"navbar_bg_normal.png" 
 ];
      
 UIGraphicsBeginImageContext 
 ( 
 CGSizeMake 
 ( 
 kScreenWidth 
 , 64));
     [img  
 drawInRect 
 : 
 CGRectMake 
 (0, 0,  
 kScreenWidth 
 , 64)];
     img =  
 UIGraphicsGetImageFromCurrentImageContext 
 (); 
     
 UIGraphicsEndImageContext();
 
     
 //1. 
 设置项目全局的导航栏的背景图片
 
UINavigationBar appearance] setBackgroundImage:imgforBarMetrics:UIBarMetricsDefault];
 
//2.设置项目全局的导航栏的字体样式,
 
    //也可以单独的设置字体的大小或者颜色,这样的话,没有设置的一项就会采用默认显示,所以最好还是同时设置
 
UINavigationBar appearance]setTitleTextAttributes:@{NSFontAttributeName: [UIFontboldSystemFontOfSize:16], NSForegroundColorAttributeName: [UIColorwhiteColor]}];




四、自定义UI组件


//这里是一个示例,自定义一个Button
 
#import  
 <UIKit/UIKit.h>
 
@interface  
 WXButton :  
 UIControl 
 
 {
      
 UIImageView  
 *_checkImg; 
}
 

 
@property  
 ( 
 nonatomic 
 ,  
 strong 
 )  
 UIImageView  
 *checkImg;
 
- ( 
 id 
 )initWithFrame:( 
 CGRect 
 )frame ImageName:( 
 NSString  
 *)imgName;
 
@end
 

 
//实现
 
#import  
 "WXButton.h"
 
@implementation  
 WXButton
 
- ( 
 id 
 )initWithFrame:( 
 CGRect 
 )frame ImageName:( 
 NSString  
 *)imgName
 {
      
 self  
 = [ 
 super  
 initWithFrame 
 :frame];
      
 if  
 ( 
 self 
 ) { 
//...
 
//添加UI,设置跟随的图片获取其他相关属性
 
         
 _checkImg  
 = [[ 
 UIImageView  
 alloc 
 ] 
 initWithFrame 
 : 
 CGRectMake 
 (frame. 
 size 
 . 
 width  
 - 18, frame. 
 size 
 . 
 height  
 - 18, 18, 18)];
          
 _checkImg 
 . 
 image  
 = [ 
 UIImage  
 imageNamed 
 : 
 @"checkmark.png" 
 ];
          
 _checkImg 
 . 
 hidden  
 =  
 YES 
 ;
         [ 
 self  
 addSubview 
 : 
 _checkImg 
 ];
        
          
 // 
 设置自己的背景图片 
 
         [ 
 self  
 setBackgroundColor 
 :[ 
 UIColor  
 colorWithPatternImage 
 :[ 
 UIImage 
 imageNamed 
 :imgName]]];
         
//        [self addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside]; 
   
 
    }
 
     
 return  
 self 
 ;
 } 

 
//设置默认的点击事件
 
//- (void)btnClick 
 
 
 //{ 
 
 
 //    checkImg.hidden = !checkImg.hidden; 
//}
 

    

 
@end