BGNameSlider.m 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. //
  2. // BGNameSlider.m
  3. // BuguLive
  4. //
  5. // Created by xfg on 2017/2/17.
  6. // Copyright © 2017年 xfg. All rights reserved.
  7. //
  8. #import "BGNameSlider.h"
  9. @implementation BGNameSlider
  10. - (id)init
  11. {
  12. self = [super init];
  13. if (self)
  14. {
  15. self.nameL = [[UILabel alloc] init];
  16. self.nameL.textColor = kAppGrayColor1;
  17. self.nameL.textAlignment = NSTextAlignmentCenter;
  18. [self addSubview:_nameL];
  19. self.valueL = [[UILabel alloc] init];
  20. self.valueL.textColor = kAppGrayColor1;
  21. self.valueL.textAlignment = NSTextAlignmentCenter;
  22. [self addSubview:_valueL];
  23. self.slider = [[UISlider alloc] init];
  24. self.slider.minimumValue = 0;
  25. self.slider.maximumValue = 100;
  26. [self.slider setThumbImage:[UIImage imageNamed:@"fw_relive_slider_thumb"] forState:UIControlStateNormal];
  27. self.slider.minimumTrackTintColor = kAppMainColor;
  28. [self addSubview:_slider];
  29. [_slider addTarget:self action:@selector(onSlider:) forControlEvents:UIControlEventValueChanged];
  30. self.onSliderBlock = nil;
  31. _normalValue = (_slider.value - _slider.minimumValue) / _slider.maximumValue;
  32. _precision = 0;
  33. }
  34. return self;
  35. }
  36. - (void)setFrame:(CGRect)frame
  37. {
  38. [super setFrame:frame];
  39. [self layoutSlider];
  40. }
  41. - (void)layoutSlider
  42. {
  43. CGFloat wdt = self.frame.size.width;
  44. CGFloat hgt = self.frame.size.height;
  45. [_nameL sizeToFit];
  46. [_valueL sizeToFit];
  47. CGFloat wdtN = _nameL.frame.size.width + 10;
  48. CGFloat wdtV = _valueL.frame.size.width + 10;
  49. CGFloat wdtS = wdt - wdtN - wdtV;
  50. _nameL.frame = CGRectMake(0, 0, wdtN, hgt);
  51. _slider.frame = CGRectMake(wdtN, 0, wdtS, hgt);
  52. _valueL.frame = CGRectMake(wdtN+wdtS, 0,wdtV, hgt);
  53. }
  54. - (void)updateValue
  55. {
  56. float val = _slider.value;
  57. if (_precision == 0){
  58. _valueL.text = [NSString stringWithFormat:@"%d", (int)val];
  59. }
  60. else {
  61. NSString *fmt =[NSString stringWithFormat:@"%%0.%df", _precision];
  62. _valueL.text = [NSString stringWithFormat:fmt, val];
  63. }
  64. [self layoutSlider];
  65. _normalValue = (_slider.value - _slider.minimumValue) / _slider.maximumValue;
  66. }
  67. //UIControlEventValueChanged
  68. - (void)onSlider:(id)sender
  69. {
  70. [self updateValue];
  71. if (_onSliderBlock)
  72. {
  73. _onSliderBlock(self);
  74. }
  75. }
  76. @synthesize normalValue = _normalValue;
  77. - (float)normalValue
  78. {
  79. return _normalValue;
  80. }
  81. - (void)setNormalValue:(float )val
  82. {
  83. _slider.value = val * _slider.maximumValue + _slider.minimumValue;
  84. [self updateValue];
  85. }
  86. @end