ZZNavigationView.m 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. //
  2. // ZZNavigationView.m
  3. // Canada
  4. //
  5. //
  6. #import "ZZNavigationView.h"
  7. @interface ZZNavigationView ()
  8. {
  9. UIButton * leftBtn;
  10. UIButton * rightBtn;
  11. UIImageView * headerImageView;
  12. UILabel * titleLabel;
  13. UIImageView * statusBack;
  14. UIImageView * navigationBack;
  15. }
  16. @end
  17. @implementation ZZNavigationView
  18. @synthesize leftImage = _leftImage;
  19. @synthesize rightImage = _rightImage;
  20. @synthesize headerImage = _headerImage;
  21. @synthesize title = _title;
  22. @synthesize delegate =_delegate;
  23. @synthesize navigaionBackColor = _navigaionBackColor;
  24. - (id)initWithFrame:(CGRect)frame
  25. {
  26. self = [super initWithFrame:frame];
  27. if (self) {
  28. // Initialization code
  29. statusBack = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, 20)];
  30. [self addSubview:statusBack];
  31. navigationBack = [[UIImageView alloc] initWithFrame:CGRectMake(0, statusBack.frame.size.height, self.frame.size.width, self.frame.size.height-statusBack.frame.size.height)];
  32. navigationBack.userInteractionEnabled = YES;
  33. [self addSubview:navigationBack];
  34. leftBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  35. leftBtn.frame = CGRectMake(8, self.frame.size.height/2-_leftImage.size.height/2, _leftImage.size.width, _leftImage.size.height);
  36. [leftBtn addTarget:self action:@selector(leftButtonEvent) forControlEvents:UIControlEventTouchUpInside];
  37. [navigationBack addSubview:leftBtn];
  38. rightBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  39. rightBtn.frame = CGRectMake(self.frame.size.width-_rightImage.size.width-5, self.frame.size.height/2-_rightImage.size.height/2, _rightImage.size.width, _rightImage.size.height);
  40. [rightBtn addTarget:self action:@selector(rightButtonEvent) forControlEvents:UIControlEventTouchUpInside];
  41. [navigationBack addSubview:rightBtn];
  42. titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
  43. titleLabel.textAlignment = NSTextAlignmentCenter;
  44. titleLabel.backgroundColor = [UIColor clearColor];
  45. titleLabel.textColor = [UIColor whiteColor];
  46. titleLabel.font = [UIFont systemFontOfSize:16.0f];
  47. [navigationBack addSubview:titleLabel];
  48. headerImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,0,0)];
  49. [navigationBack addSubview:headerImageView];
  50. }
  51. return self;
  52. }
  53. -(void)setLeftImage:(UIImage *)leftImage
  54. {
  55. leftBtn.frame = CGRectMake(8-10, navigationBack.frame.size.height/2-leftImage.size.height/2-5, leftImage.size.width+20, leftImage.size.height+10);
  56. [leftBtn setImage:leftImage forState:UIControlStateNormal];
  57. }
  58. -(void)setRightImage:(UIImage *)rightImage
  59. {
  60. rightBtn.frame = CGRectMake(navigationBack.frame.size.width-rightImage.size.width-8, navigationBack.frame.size.height/2-rightImage.size.height/2, rightImage.size.width, rightImage.size.height);
  61. [rightBtn setImage:rightImage forState:UIControlStateNormal];
  62. }
  63. -(void)setHeaderImage:(UIImage *)headerImage
  64. {
  65. headerImageView.frame = CGRectMake(navigationBack.frame.size.width/2-headerImage.size.width/2, navigationBack.frame.size.height/2-headerImage.size.height/2, headerImage.size.width, headerImage.size.height);
  66. [headerImageView setImage:headerImage];
  67. }
  68. -(void)setTitle:(NSString *)title
  69. {
  70. CGSize titleSize = [title sizeWithFont:titleLabel.font constrainedToSize:CGSizeMake(navigationBack.frame.size.width, CGFLOAT_MAX) lineBreakMode:NSLineBreakByClipping];
  71. if (titleSize.width>200) {
  72. titleSize.width = 200;
  73. }
  74. if (headerImageView.image!=nil) {
  75. headerImageView.frame = CGRectMake(navigationBack.frame.size.width/2-headerImageView.image.size.width/2-titleSize.width/2, navigationBack.frame.size.height/2-headerImageView.image.size.height/2, headerImageView.frame.size.width, headerImageView.frame.size.height);
  76. titleLabel.frame = CGRectMake(headerImageView.frame.size.width+headerImageView.frame.origin.x, navigationBack.frame.size.height/2-titleSize.height/2, titleSize.width, titleSize.height);
  77. }else{
  78. titleLabel.frame = CGRectMake(navigationBack.frame.size.width/2-titleSize.width/2, navigationBack.frame.size.height/2-titleSize.height/2, titleSize.width, titleSize.height);
  79. }
  80. titleLabel.text = title;
  81. }
  82. -(void)setNavigaionBackColor:(UIColor *)navigaionBackColor
  83. {
  84. statusBack.backgroundColor = navigaionBackColor;
  85. statusBack.alpha = 0.5;
  86. navigationBack.backgroundColor = navigaionBackColor;
  87. }
  88. -(void)setType:(NSInteger)type
  89. {
  90. if (type==0) {
  91. statusBack.frame = CGRectMake(0, 0, self.frame.size.width, 0);
  92. }else if (type ==1){
  93. statusBack.frame = CGRectMake(0, 0, self.frame.size.width, 20);
  94. }
  95. navigationBack.frame = CGRectMake(0, statusBack.frame.size.height, self.frame.size.width, self.frame.size.height-statusBack.frame.size.height);
  96. }
  97. -(void)leftButtonEvent
  98. {
  99. [_delegate previousToViewController];
  100. }
  101. -(void)rightButtonEvent
  102. {
  103. [_delegate rightButtonClickEvent];
  104. }
  105. /*
  106. // Only override drawRect: if you perform custom drawing.
  107. // An empty implementation adversely affects performance during animation.
  108. - (void)drawRect:(CGRect)rect
  109. {
  110. // Drawing code
  111. }
  112. */
  113. @end