自绘窗口类
HeaderViewController.h文件
#import <UIKit/UIKit.h>
@interface ImageButton : UIControl
@property(strong,nonatomic) UIImageView *imageView;
@property(strong,nonatomic) UILabel *label;
@end
@class HeaderViewController;
@protocol HeadViewDelegate <NSObject>
@required
-(void)headView:(HeaderViewController*)view touchDown:(NSInteger)index;
@end
@class ImageButton;
@interface HeaderViewController : UIView
{
NSInteger currentSelected;
NSArray *imageArray;
ImageButton *priorBtn;
}
@property (nonatomic, weak, readwrite) id <HeadViewDelegate> delegate;
-(id)initWithFrame:(CGRect)frame AndCurrentSelected:(NSInteger)index;
@end
HeaderViewController.m文件
#import "HeaderViewController.h"
@implementation HeaderViewController
- (id)initWithFrame:(CGRect)frame
{
return [self initWithFrame:frame AndCurrentSelected:currentSelected];
}
-(id)initWithFrame:(CGRect)frame AndCurrentSelected:(NSInteger)index
{
if ((self = [super initWithFrame:frame]))
{
currentSelected = index;
}
return self;
}
# pragma mark - Drawing
-(void)drawRect:(CGRect)rect
{
// 整体背景
UIImage *image = [UIImage imageNamed:@"nav_top_bg.jpg"];
[image drawInRect:rect];
// 添加button
NSMutableDictionary *imgDic = [NSMutableDictionary dictionaryWithCapacity:2];
[imgDic setObject:[UIImage imageNamed:@"nav_top_rm_unpress.png"] forKey:@"Default"];
[imgDic setObject:[UIImage imageNamed:@"nav_top_rm_press.png"] forKey:@"Seleted"];
NSMutableDictionary *imgDic2 = [NSMutableDictionary dictionaryWithCapacity:2];
[imgDic2 setObject:[UIImage imageNamed:@"nav_top_fl_unpress.png"] forKey:@"Default"];
[imgDic2 setObject:[UIImage imageNamed:@"nav_top_fl_press.png"] forKey:@"Seleted"];
NSMutableDictionary *imgDic3 = [NSMutableDictionary dictionaryWithCapacity:2];
[imgDic3 setObject:[UIImage imageNamed:@"nav_top_ph_unpress.png"] forKey:@"Default"];
[imgDic3 setObject:[UIImage imageNamed:@"nav_top_ph_press.png"] forKey:@"Seleted"];
NSMutableDictionary *imgDic4 = [NSMutableDictionary dictionaryWithCapacity:2];
[imgDic4 setObject:[UIImage imageNamed:@"nav_top_ss_unpress.png"] forKey:@"Default"];
[imgDic4 setObject:[UIImage imageNamed:@"nav_top_ss_press.png"] forKey:@"Seleted"];
NSMutableDictionary *imgDic5 = [NSMutableDictionary dictionaryWithCapacity:2];
[imgDic5 setObject:[UIImage imageNamed:@"nav_top_jg_unpress.png"] forKey:@"Default"];
[imgDic5 setObject:[UIImage imageNamed:@"nav_top_jg_press.png"] forKey:@"Seleted"];
imageArray = [NSArray arrayWithObjects:imgDic,imgDic2,imgDic3,imgDic4,imgDic5,nil];
NSArray *titleA = [NSArray arrayWithObjects:@"热门",@"分类",@"排行",@"搜索",@"荐购",nil];
ImageButton *imagebtn;
for (int i = 0; i < [imageArray count]; i++)
{
imagebtn = [[ImageButton alloc] initWithFrame:CGRectMake(15+60*i, 2, 60, 50)];
imagebtn.tag = i;
imagebtn.backgroundColor = [UIColor clearColor];
[imagebtn addTarget:self action:@selector(topClick:) forControlEvents:UIControlEventTouchUpInside];
[imagebtn addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown];
imagebtn.label.text = [titleA objectAtIndex:i];
[self addSubview:imagebtn];
if (i == currentSelected)
{
[imagebtn setSelected:YES];
priorBtn = imagebtn;
}
[self updateCurrentButton:imagebtn];
}
}
// 点击热门导航按下时触发事件 更改背景图
- (void)touchDown:(id)sender
{
ImageButton *btn=(ImageButton *)sender;
if (priorBtn == btn)
{
// 点击相同操作不做处理
return;
}
else
{
// 取消前次操作的button设置
[priorBtn setSelected:NO];
// 更改当前button设置
[btn setSelected:YES];
}
[self updateCurrentButton:btn];
}
// 点击热门导航事件 抬起时事件处理 进行场景切换
- (void)topClick:(id)sender
{
ImageButton *btn=(ImageButton *)sender;
if (priorBtn == btn)
{
// 点击相同操作不做处理
return;
}
else
{
priorBtn = btn;
}
[self updateCurrentButton:btn];
[_delegate headView:self touchDown:btn.tag];
}
-(void)updateCurrentButton:(ImageButton*)imagebutton
{
NSInteger index = imagebutton.tag;
NSInteger priorIndex = priorBtn.tag;
// 选中字体颜色设置
UIColor *tintColor = [UIColor colorWithRed:(0/255) green:(255/255) blue:(255/255) alpha:1.0];
if (index != priorIndex)
{
if (priorBtn.selected == YES)
{
priorBtn.imageView.image = [[imageArray objectAtIndex:priorIndex] objectForKey:@"Seleted"];
imagebutton.label.textColor = tintColor;
}
else
{
priorBtn.imageView.image = [[imageArray objectAtIndex:priorIndex] objectForKey:@"Default"];
priorBtn.label.textColor = [UIColor whiteColor];
}
}
if (imagebutton.selected == YES)
{
imagebutton.imageView.image = [[imageArray objectAtIndex:index] objectForKey:@"Seleted"];
imagebutton.label.textColor = tintColor;
}
else
{
imagebutton.imageView.image = [[imageArray objectAtIndex:index] objectForKey:@"Default"];
imagebutton.label.textColor = [UIColor whiteColor];
}
}
@end
@implementation ImageButton
-(id)initWithFrame:(CGRect)frame
{
if ((self = [super initWithFrame:frame]))
{
_imageView = [[UIImageView alloc] init];
_imageView.frame = CGRectMake(10, 2, 30, 30);
[self addSubview:_imageView];
_label = [[UILabel alloc] init];
_label.font = [UIFont fontWithName:@"ArialMT" size:10.0f];
_label.frame = CGRectMake(10, 32, 30, 10);
_label.textAlignment = NSTextAlignmentCenter;
_label.autoresizingMask = UIViewAutoresizingFlexibleWidth;
[self addSubview:_label];
}
return self;
}
@end
#import "RootViewController.h"
#import "HeaderViewController.h"
@interface RootViewController ()<HeadViewDelegate>
@end
@implementation RootViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// 设置窗口背景
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"fl_bg.jpg"]];
// 添加顶部导航栏
CGRect headViewRect = self.view.bounds;
headViewRect.origin.y = 20;
headViewRect.size.height = 44;
HeaderViewController *headView = [[HeaderViewController alloc] initWithFrame:headViewRect AndCurrentSelected:0];
[self.view addSubview:headView];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark HeadViewDelegate methods
-(void)headView:(HeaderViewController *)view touchDown:(NSInteger)index
{
...
}
@end