RKHorPickerView.m 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. //
  2. // RKHorPickerView.m
  3. // YBVideo
  4. //
  5. // Created by YB007 on 2019/12/9.
  6. // Copyright © 2019 cat. All rights reserved.
  7. //
  8. #import "RKHorPickerView.h"
  9. #import "UIImage+RKCircleImg.h"
  10. @interface RKHorPickerView()<UIPickerViewDelegate,UIPickerViewDataSource>
  11. @end
  12. @implementation RKHorPickerView {
  13. UIPickerView *picker;
  14. }
  15. - (instancetype)initWithFrame:(CGRect)frame {
  16. self = [super initWithFrame:frame];
  17. if (self) {
  18. [self performSelector:@selector(initPickerView)];
  19. }
  20. return self;
  21. }
  22. -(void)initPickerView{
  23. CGAffineTransform rotate = CGAffineTransformMakeRotation(-M_PI/2);
  24. rotate = CGAffineTransformScale(rotate, 0.1, 1);
  25. //旋转 -π/2角度
  26. picker = [[UIPickerView alloc]initWithFrame:CGRectMake(0, 0, self.frame.size.height*10, self.frame.size.width-6)];
  27. [picker setTag: 10086];
  28. picker.delegate = self;
  29. picker.dataSource = self;
  30. picker.showsSelectionIndicator = false;
  31. [picker setBackgroundColor:[UIColor clearColor]];
  32. UIImageView *imageV = [[UIImageView alloc]initWithFrame:CGRectMake(self.frame.size.width/2-2.5, (self.frame.size.height- 6), 5, 5)];
  33. imageV.image = [[self getImgWithColor:[UIColor clearColor] withSize:CGSizeMake(5, 5)] rk_circleImage];
  34. UIView *bgV = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.frame.size.width,self.frame.size.height)];
  35. [bgV addSubview:picker];
  36. [bgV addSubview:imageV];
  37. [self addSubview:bgV];
  38. [picker setTransform:rotate];
  39. picker.center = CGPointMake(self.frame.size.width / 2, self.frame.size.height / 2);
  40. }
  41. -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
  42. return _dataArray.count;
  43. }
  44. -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
  45. return 1;
  46. }
  47. -(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{
  48. if ([self.delegate performSelector:@selector(pickerViewBeginScroll)]) {
  49. [self.delegate pickerViewBeginScroll];
  50. }
  51. CGAffineTransform rotateItem = CGAffineTransformMakeRotation(M_PI/2);
  52. rotateItem = CGAffineTransformScale(rotateItem, 1, 10);
  53. CGFloat width = self.frame.size.height;
  54. UIView *itemView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, width*2, width-6)];
  55. itemView.backgroundColor = UIColor.clearColor;
  56. UILabel *title = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, CGRectGetWidth(itemView.frame), CGRectGetHeight(itemView.frame))];
  57. title.font = [UIFont systemFontOfSize:15];
  58. title.textColor = UIColor.whiteColor;
  59. title.text = _dataArray[row];
  60. title.textAlignment = NSTextAlignmentCenter;
  61. [itemView addSubview:title];
  62. itemView.transform = rotateItem;
  63. [[pickerView.subviews objectAtIndex:1] setHidden:TRUE];
  64. [[pickerView.subviews objectAtIndex:2] setHidden:TRUE];
  65. return itemView;
  66. }
  67. - (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component __TVOS_PROHIBITED{
  68. return self.frame.size.height;
  69. }
  70. - (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component{
  71. return self.frame.size.height*2;
  72. }
  73. -(void)scrollToIndex:(NSInteger)scrollToIndex{
  74. [picker selectRow:scrollToIndex inComponent:0 animated:true];
  75. }
  76. - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
  77. [self.delegate pickerView:pickerView didSelectRow:row];
  78. }
  79. -(UIImage*)getImgWithColor:(UIColor *)color withSize:(CGSize)size{
  80. CGRect rect = CGRectMake(0.0f,0.0f, size.width,size.height);
  81. UIGraphicsBeginImageContext(rect.size);
  82. CGContextRef context =UIGraphicsGetCurrentContext();
  83. CGContextSetFillColorWithColor(context, [color CGColor]);
  84. CGContextFillRect(context, rect);
  85. UIImage *image =UIGraphicsGetImageFromCurrentImageContext();
  86. UIGraphicsEndImageContext();
  87. return image;
  88. }
  89. @end