menuImageView.m 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. //
  2. // menuImageView.m
  3. // sjvodios
  4. //
  5. // Created by daxiong on 13-4-17.
  6. //
  7. //
  8. #import "menuImageView.h"
  9. @implementation menuImageView
  10. @synthesize type,delegate,items,offset,arrayBtns,itemWidth,selected,menuFont,showSelected;
  11. - (id)initWithFrame:(CGRect)frame
  12. {
  13. self = [super initWithFrame:frame];
  14. if (self) {
  15. // self.showSelected = YES;
  16. self.backgroundColor = [UIColor clearColor];
  17. self.userInteractionEnabled = YES;
  18. arrayBtns = [[NSMutableArray alloc] init];
  19. if(menuFont==nil)
  20. self.menuFont = g_factory.font13;
  21. [self draw];
  22. }
  23. return self;
  24. }
  25. -(void)draw{
  26. int width=self.frame.size.width/[items count];
  27. int n = 0;
  28. int t = (self.frame.size.height-30)/2;
  29. UIButton* btn;
  30. btn = [self createButtonWithRect:CGRectMake(n, t, width, 30)
  31. title:[items objectAtIndex:0]
  32. titleFont:menuFont
  33. normal:@"title_button_left"
  34. selected:@"title_button_left_press"
  35. selector:@selector(onClick:)
  36. target:self];
  37. btn.tag = 0;
  38. // [btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
  39. // [btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
  40. [self addSubview:btn];
  41. [arrayBtns addObject:btn];
  42. NSInteger i;
  43. for(i=1;i<[items count]-1;i++){
  44. btn = [self createButtonWithRect:CGRectMake(n+width*i, t, width, 30)
  45. title:[items objectAtIndex:i]
  46. titleFont:menuFont
  47. normal:@"title_button_middle"
  48. selected:@"title_button_middle_press"
  49. selector:@selector(onClick:)
  50. target:self];
  51. btn.tag = i;
  52. // [btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
  53. // [btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
  54. [self addSubview:btn];
  55. [arrayBtns addObject:btn];
  56. }
  57. i =[items count]-1;
  58. btn = [self createButtonWithRect:CGRectMake(n+width*i, t, width, 30)
  59. title:[items objectAtIndex:i]
  60. titleFont:menuFont
  61. normal:@"title_button_right"
  62. selected:@"title_button_right_press"//@"title_button_right_press.png"
  63. selector:@selector(onClick:)
  64. target:self];
  65. btn.tag = i;
  66. // [btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
  67. // [btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
  68. [self addSubview:btn];
  69. [arrayBtns addObject:btn];
  70. }
  71. -(void)dealloc{
  72. // [arrayBtns release];
  73. // [items release];
  74. // [super dealloc];
  75. }
  76. -(void)onClick:(UIButton*)sender{
  77. //全设为非选中
  78. [self unSelectAll];
  79. if(showSelected)
  80. sender.selected = YES;
  81. self.selected = (int)sender.tag;
  82. if(self.delegate != nil && [self.delegate respondsToSelector:self.onClick])
  83. [self.delegate performSelectorOnMainThread:self.onClick withObject:sender waitUntilDone:NO];
  84. }
  85. -(void)unSelectAll{
  86. for(int i=0;i<[arrayBtns count];i++)
  87. ((UIButton*)[arrayBtns objectAtIndex:i]).selected = NO;
  88. selected = -1;
  89. }
  90. -(void)selectOne:(int)n{
  91. [self unSelectAll];
  92. if(n >= [self.arrayBtns count]-1 || n < 0 )
  93. return;
  94. ((UIButton*)[self.arrayBtns objectAtIndex:n]).selected = YES;
  95. selected = n;
  96. }
  97. -(void)setTitle:(int)n title:(NSString*)s{
  98. if(n >= [self.arrayBtns count])
  99. return;
  100. [[self.arrayBtns objectAtIndex:n] setTitle:s forState:UIControlStateNormal];
  101. }
  102. - (UIButton *)createButtonWithRect:(CGRect)frame
  103. title:(NSString *)title
  104. titleFont:(UIFont *)font
  105. normal:(NSString *)normalImage
  106. selected:(NSString *)clickIamge
  107. selector:(SEL)selector
  108. target:(id)target;
  109. {
  110. UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
  111. button.frame = frame;
  112. if (title != nil)
  113. [button setTitle:title forState:UIControlStateNormal];
  114. // [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
  115. [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
  116. [button setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected];
  117. if (font != nil)
  118. [button.titleLabel setFont:font];
  119. //是发送按钮不变色
  120. if ([title isEqualToString:Localized(@"JX_MyRoom")]||[title isEqualToString:Localized(@"JX_AllRoom")]) {
  121. [button setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected];
  122. [button.titleLabel setFont:g_factory.font16];
  123. }
  124. // UIEdgeInsets ed = {1.0f, 1.0f, 1.0f, 1.0f};
  125. if (normalImage != nil)
  126. // [button setBackgroundImage:[[UIImage imageNamed:normalImage] resizableImageWithCapInsets:ed resizingMode:UIImageResizingModeStretch] forState:UIControlStateNormal];
  127. //拉伸
  128. [button setBackgroundImage:[[UIImage imageNamed:normalImage] stretchableImageWithLeftCapWidth:6 topCapHeight:6] forState:UIControlStateNormal];
  129. // [button setBackgroundImage:[UIImage imageNamed:normalImage] forState:UIControlStateNormal];
  130. if (clickIamge != nil)
  131. // [button setBackgroundImage:[[UIImage imageNamed:clickIamge] resizableImageWithCapInsets:ed resizingMode:UIImageResizingModeStretch] forState:UIControlStateSelected];
  132. [button setBackgroundImage:[[UIImage imageNamed:clickIamge] stretchableImageWithLeftCapWidth:6 topCapHeight:6] forState:UIControlStateSelected];
  133. // [button setBackgroundImage:[UIImage imageNamed:clickIamge] forState:UIControlStateSelected];
  134. if ((selector != nil) && (target != nil))
  135. [button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
  136. //让“发送”按钮不被选中
  137. return button;
  138. }
  139. -(void)reset{
  140. [arrayBtns removeAllObjects];
  141. for(NSInteger i=[[self subviews] count]-1;i>=0;i--){
  142. UIView* p = [self.subviews objectAtIndex:i];
  143. [p removeFromSuperview];
  144. }
  145. }
  146. @end