263 lines
11 KiB
Objective-C
263 lines
11 KiB
Objective-C
//
|
||
// CustomTopBar.m
|
||
// Yoosee
|
||
//
|
||
// Created by eppla on 16/3/23.
|
||
// Copyright © 2016年 guojunyi. All rights reserved.
|
||
//
|
||
|
||
#import "CustomTopBar.h"
|
||
#import "Constants.h"
|
||
|
||
@implementation CustomTopBar
|
||
|
||
|
||
#define MSG_ICON_ITERVAL_X 17
|
||
#define MSG_ICON_ITERVAL_Y 7
|
||
|
||
#define LEFT_BAR_BTN_WIDTH (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ? 90:60)
|
||
#define LEFT_BAR_BTN_MARGIN (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ? 10:5.0)
|
||
|
||
#define RIGHT_BAR_BTN_WIDTH (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ? 90:60)
|
||
#define RIGHT_BAR_BTN_MARGIN (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ? 10:5)
|
||
|
||
- (id)initWithFrame:(CGRect)frame
|
||
{
|
||
self = [super initWithFrame:frame];
|
||
if (self) {
|
||
|
||
//TopBar导航的背景
|
||
UIImageView *backImgView = [[UIImageView alloc] initWithFrame:frame];
|
||
backImgView.image = [UIImage imageNamed:@""];
|
||
[self addSubview:backImgView];
|
||
self.backgroundImageView = backImgView;
|
||
|
||
|
||
|
||
//导航内容的frame为(0.0, 20.0, width, 44.0)
|
||
if(CURRENT_VERSION>=7.0){
|
||
frame = CGRectMake(frame.origin.x, frame.origin.y+20, frame.size.width, frame.size.height-20);
|
||
}
|
||
|
||
|
||
|
||
//导航的标题
|
||
UILabel *textLabel = [[UILabel alloc] initWithFrame:frame];
|
||
textLabel.backgroundColor = XBGAlpha;
|
||
textLabel.textAlignment = NSTextAlignmentCenter;
|
||
textLabel.textColor = XHeadBarTextColor;
|
||
[textLabel setFont:[UIFont boldSystemFontOfSize:XHeadBarTextSize]];
|
||
[backImgView addSubview:textLabel];
|
||
self.titleLabel = textLabel;
|
||
|
||
|
||
|
||
//导航的返回按钮
|
||
//导航栏为44.0,图片为20.0*20.0
|
||
CGFloat backButton_x = 5.0;
|
||
CGFloat backButton_y = 5.0;
|
||
CGFloat backButton_w = 44.0-2*backButton_y;
|
||
CGFloat backButton_h = backButton_w;
|
||
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||
backButton.frame = CGRectMake(backButton_x, frame.origin.y+backButton_y, backButton_w, backButton_h);
|
||
[self addSubview:backButton];
|
||
[backButton setHidden:YES];
|
||
self.backButton = backButton;
|
||
//返回按钮的图片
|
||
UIImageView *backBtnIconView = [[UIImageView alloc]initWithFrame:CGRectMake((self.backButton.frame.size.width-self.backButton.frame.size.height)/2, 0, self.backButton.frame.size.height, self.backButton.frame.size.height)];
|
||
backBtnIconView.image = [UIImage imageNamed:@""];
|
||
[self.backButton addSubview:backBtnIconView];
|
||
self.backButtonIconView = backBtnIconView;
|
||
|
||
|
||
|
||
|
||
//导航左边的按钮(只是大小与返回按钮不同)
|
||
//导航栏为44.0,图片为20.0*20.0
|
||
CGFloat leftButton_x = 5.0;
|
||
CGFloat leftButton_y = 5.0;
|
||
CGFloat leftButton_w = 44.0-2*leftButton_y;
|
||
CGFloat leftButton_h = leftButton_w;
|
||
UIButton *leftButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||
leftButton.frame = CGRectMake(leftButton_x, frame.origin.y+leftButton_y, leftButton_w, leftButton_h);
|
||
[self addSubview:leftButton];
|
||
[leftButton setHidden:YES];
|
||
self.leftButton = leftButton;
|
||
//左边按钮的图片
|
||
UIImageView *leftButtonIconView = [[UIImageView alloc]initWithFrame:CGRectMake((self.leftButton.frame.size.width-self.leftButton.frame.size.height)/2, LEFT_BAR_BTN_MARGIN, self.leftButton.frame.size.height-10, self.leftButton.frame.size.height-10)];
|
||
leftButtonIconView.image = [UIImage imageNamed:@""];
|
||
leftButtonIconView.contentMode = UIViewContentModeScaleAspectFit;
|
||
[self.leftButton addSubview:leftButtonIconView];
|
||
self.leftButtonIconView = leftButtonIconView;
|
||
|
||
|
||
|
||
|
||
//导航右边的按钮
|
||
//导航栏为44.0,图片为20.0*20.0
|
||
CGFloat rightMargin = 5.0;
|
||
CGFloat rightButton_y = 5.0;
|
||
CGFloat rightButton_w = 44.0-2*rightButton_y;
|
||
CGFloat rightButton_h = rightButton_w;
|
||
UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||
rightButton.frame = CGRectMake(frame.size.width-rightMargin-rightButton_w, frame.origin.y+rightButton_y, rightButton_w, rightButton_h);
|
||
[self addSubview:rightButton];
|
||
[rightButton setHidden:YES];
|
||
self.rightButton = rightButton;
|
||
//右边按钮的图片
|
||
UIImageView *rightButtonIconView = [[UIImageView alloc]initWithFrame:CGRectMake((self.rightButton.frame.size.width-self.rightButton.frame.size.height)/2, 0, self.rightButton.frame.size.height, self.rightButton.frame.size.height)];
|
||
rightButtonIconView.image = [UIImage imageNamed:@""];
|
||
[self.rightButton addSubview:rightButtonIconView];
|
||
self.rightButtonIconView = rightButtonIconView;
|
||
|
||
//右边按钮的文本
|
||
UILabel *rightButtonLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,0,self.rightButton.frame.size.width,self.rightButton.frame.size.height)];
|
||
rightButtonLabel.backgroundColor = XBGAlpha;
|
||
rightButtonLabel.textAlignment = NSTextAlignmentCenter;
|
||
rightButtonLabel.textColor = XWhite;
|
||
[rightButtonLabel setFont:XFontBold_14];
|
||
[self.rightButton addSubview:rightButtonLabel];
|
||
self.rightButtonLabel = rightButtonLabel;
|
||
|
||
|
||
|
||
//导航第二种右边按钮(显示新的报警记录)
|
||
UIButton *rightButton2 = [UIButton buttonWithType:UIButtonTypeCustom];
|
||
rightButton2.frame = CGRectMake(frame.origin.x+(frame.size.width-RIGHT_BAR_BTN_MARGIN-RIGHT_BAR_BTN_WIDTH-RIGHT_BAR_BTN_WIDTH+10), frame.origin.y+RIGHT_BAR_BTN_MARGIN, RIGHT_BAR_BTN_WIDTH, frame.size.height-RIGHT_BAR_BTN_MARGIN*2);
|
||
rightButton2.layer.cornerRadius = 10;
|
||
[self addSubview:rightButton2];
|
||
[rightButton2 setHidden:YES];
|
||
self.rightButton2 = rightButton2;
|
||
//按钮文本
|
||
UILabel *rightButtonLabel2 = [[UILabel alloc] initWithFrame:CGRectMake(self.rightButton2.frame.origin.x+self.rightButton2.frame.size.width-MSG_ICON_ITERVAL_X-10, self.rightButton2.frame.origin.y+MSG_ICON_ITERVAL_Y-8, 16, 16)];
|
||
rightButtonLabel2.backgroundColor = [UIColor redColor];
|
||
rightButtonLabel2.layer.cornerRadius = 8;//rectButton2.size.height/2;
|
||
[[rightButtonLabel2 layer] setMasksToBounds:YES];
|
||
rightButtonLabel2.textAlignment = NSTextAlignmentCenter;
|
||
rightButtonLabel2.textColor = XWhite;
|
||
[rightButtonLabel2 setFont:[UIFont boldSystemFontOfSize:8.0]];
|
||
[self addSubview:rightButtonLabel2];
|
||
rightButtonLabel2.hidden = YES;
|
||
self.rightButtonLabel2 = rightButtonLabel2;
|
||
|
||
}
|
||
return self;
|
||
}
|
||
|
||
#pragma mark - 导航背景设置
|
||
-(void)setBackgroundImageViewWith:(UIImage *)backgroundImage withBackgroundColor:(UIColor *)backgroundColor{
|
||
if (self.backgroundImageView && backgroundImage) {//bg_navigation_bar.png
|
||
backgroundImage = [backgroundImage stretchableImageWithLeftCapWidth:backgroundImage.size.width*0.5 topCapHeight:backgroundImage.size.height*0.5];
|
||
self.backgroundImageView.image = backgroundImage;
|
||
}
|
||
|
||
if (self.backgroundImageView && backgroundColor) {//UIColorFromRGB(0x35c5e7)
|
||
[self.backgroundImageView setBackgroundColor:backgroundColor];
|
||
}
|
||
}
|
||
|
||
|
||
#pragma mark - 设置导航的标题
|
||
-(void)setTitle:(NSString *)title{
|
||
|
||
if(self.titleLabel){
|
||
self.titleLabel.text = title;
|
||
}
|
||
}
|
||
|
||
|
||
#pragma mark - 导航返回按钮
|
||
#pragma mark 隐藏或者显示
|
||
-(void)setBackButtonHidden:(BOOL)hidden{
|
||
if(self.backButton){
|
||
[self.backButton setHidden:hidden];
|
||
}
|
||
}
|
||
#pragma mark 设置图片
|
||
-(void)setBackButtonIcon:(UIImage*)img{
|
||
if (self.backButtonIconView) {
|
||
CGFloat backButtonIconView_w = img.size.width/SCREEN_SCALE;
|
||
CGFloat backButtonIconView_h = backButtonIconView_w*(img.size.height/img.size.width);
|
||
self.backButtonIconView.frame = CGRectMake((self.backButton.frame.size.width-backButtonIconView_w)/2, (self.backButton.frame.size.height-backButtonIconView_h)/2, backButtonIconView_w, backButtonIconView_h);
|
||
self.backButtonIconView.image = img;
|
||
}
|
||
}
|
||
|
||
|
||
#pragma mark - 导航左边按钮
|
||
#pragma mark 隐藏或者显示
|
||
-(void)setLeftButtonHidden:(BOOL)hidden{
|
||
if (self.leftButton) {
|
||
[self.leftButton setHidden:hidden];
|
||
}
|
||
}
|
||
#pragma mark 设置图片
|
||
-(void)setLeftButtonIcon:(UIImage *)img{
|
||
if (self.leftButtonIconView) {
|
||
CGFloat leftButtonIconView_w = img.size.width/SCREEN_SCALE;
|
||
CGFloat leftButtonIconView_h = leftButtonIconView_w*(img.size.height/img.size.width);
|
||
self.leftButtonIconView.frame = CGRectMake((self.rightButton.frame.size.width-leftButtonIconView_w)/2, (self.rightButton.frame.size.height-leftButtonIconView_h)/2, leftButtonIconView_w, leftButtonIconView_h);
|
||
self.leftButtonIconView.image = img;
|
||
}
|
||
}
|
||
|
||
|
||
#pragma mark - 导航右边按钮
|
||
#pragma mark 隐藏或者显示
|
||
-(void)setRightButtonHidden:(BOOL)hidden{
|
||
if(self.rightButton){
|
||
[self.rightButton setHidden:hidden];
|
||
}
|
||
}
|
||
#pragma mark 设置图片
|
||
-(void)setRightButtonIcon:(UIImage *)img{
|
||
if(self.rightButtonIconView){
|
||
CGFloat rightButtonIconView_w = img.size.width/SCREEN_SCALE;
|
||
CGFloat rightButtonIconView_h = rightButtonIconView_w*(img.size.height/img.size.width);
|
||
self.rightButtonIconView.frame = CGRectMake((self.rightButton.frame.size.width-rightButtonIconView_w)/2, (self.rightButton.frame.size.height-rightButtonIconView_h)/2, rightButtonIconView_w, rightButtonIconView_h);
|
||
self.rightButtonIconView.image = img;
|
||
}
|
||
}
|
||
#pragma mark 设置文本
|
||
-(void)setRightButtonText:(NSString *)text{
|
||
if(self.rightButtonLabel){
|
||
self.rightButtonLabel.text = text;
|
||
}
|
||
}
|
||
|
||
|
||
#pragma mark - 导航右边按钮2
|
||
#pragma mark 隐藏或者显示
|
||
-(void)setRightButtonHidden2:(BOOL)hidden{
|
||
if (self.rightButton2) {
|
||
[self.rightButton2 setHidden:hidden];
|
||
[self.rightButtonLabel2 setHidden:hidden];
|
||
}
|
||
}
|
||
#pragma mark 设置图片2
|
||
-(void)setRightButtonIcon2:(UIImage *)img{
|
||
if (self.rightButton2) {
|
||
self.rightButton2.imageEdgeInsets = UIEdgeInsetsMake(MSG_ICON_ITERVAL_Y, MSG_ICON_ITERVAL_X, MSG_ICON_ITERVAL_Y, MSG_ICON_ITERVAL_X);
|
||
[self.rightButton2 setImage:img forState:UIControlStateNormal];
|
||
}
|
||
}
|
||
#pragma mark 设置文本2
|
||
-(void)setRightButtonText2:(NSString *)text{
|
||
if (self.rightButtonLabel2 == nil || self.rightButton2 == nil)
|
||
return;
|
||
|
||
if (NSOrderedSame == [text compare:@"0"])
|
||
{
|
||
[self.rightButton2 setHidden:YES];
|
||
[self.rightButtonLabel2 setHidden:YES];
|
||
}
|
||
else
|
||
{
|
||
[self.rightButton2 setHidden:NO];
|
||
[self.rightButtonLabel2 setHidden:NO];
|
||
[self.rightButtonLabel2 setText:text];
|
||
}
|
||
}
|
||
|
||
@end
|