PrintCell.m 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. // 图片轮播(无限循环)
  2. //
  3. // Created by yixiang on 14/12/12.
  4. // Copyright (c) 2014年 yixiang. All rights reserved.
  5. //
  6. #import "PrintCell.h"
  7. @interface PrintCell(){
  8. CGFloat scaleNum;//图片放大倍数
  9. CATransition *animation;//缩放动画效果
  10. UIImageView *imgV;
  11. UITapGestureRecognizer *singleTapGesture;
  12. }
  13. @end
  14. @implementation PrintCell
  15. -(instancetype)initWithFrame:(CGRect)frame{
  16. self =[super initWithFrame:frame];
  17. if (self) {
  18. }
  19. return self;
  20. }
  21. - (UIImageView*)imgView {
  22. _btnCheck=[UIButton buttonWithType:UIButtonTypeCustom];
  23. _btnCheck.frame=CGRectMake(15, 100, 25, 25);
  24. [_btnCheck addTarget:self action:@selector(btnGoCheck) forControlEvents:UIControlEventTouchUpInside];
  25. [self.contentView addSubview:_btnCheck];
  26. _imgView =[[UIImageView alloc]init];;
  27. _imgView.frame = CGRectMake(CGRectGetMaxX(_btnCheck.frame)+10,10,self.contentView.frame.size.width-CGRectGetMaxX(_btnCheck.frame)-20, 200);
  28. [self.contentView addSubview: _imgView];
  29. _imgView.userInteractionEnabled=YES;
  30. //单击手势
  31. singleTapGesture= [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleSingleTap:)];
  32. singleTapGesture.numberOfTapsRequired = 1;
  33. [_imgView addGestureRecognizer:singleTapGesture];
  34. _label=[[UILabel alloc]init];
  35. _label.frame= CGRectMake(Screen_Width/2-20,CGRectGetMaxY(_imgView.frame)+3 ,70,25);
  36. [self.contentView addSubview:_label];
  37. return _imgView;
  38. }
  39. -(void)initScrollView{
  40. UIWindow *window = self.window;
  41. _scrollView =[[UIScrollView alloc] initWithFrame:window.frame];
  42. _scrollView.bounces = true; //反弹
  43. _scrollView.scrollEnabled = true ; //滚动
  44. _scrollView.userInteractionEnabled=YES;
  45. UITapGestureRecognizer *tapGes = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(closeView:)];
  46. _scrollView.backgroundColor = [UIColor blackColor];
  47. [_scrollView addGestureRecognizer:tapGes];
  48. _sImgView = [[UIImageView alloc] init];
  49. _sImgView.image=_imgView.image;
  50. _sImgView.frame = _scrollView.frame;
  51. _sImgView.contentMode = UIViewContentModeScaleAspectFit;
  52. _sImgView.userInteractionEnabled = YES;
  53. singleTapGesture= [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(closeView:)];
  54. singleTapGesture.numberOfTapsRequired = 1;
  55. [_sImgView addGestureRecognizer:singleTapGesture];
  56. [_scrollView addSubview:_sImgView];
  57. UIPinchGestureRecognizer *pinchGes =
  58. [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchGesAction:)] ;
  59. [_sImgView addGestureRecognizer:pinchGes];}
  60. //checkbox切换函数
  61. -(void)btnGoCheck
  62. {
  63. if([self.delegate respondsToSelector:@selector(btnCheckPressed:)])
  64. {
  65. [self.delegate btnCheckPressed:self];
  66. }
  67. }
  68. -(void)setPageNumber:(NSString*)page{
  69. _label.text=page;
  70. }
  71. //设置checkbox背景图片
  72. - (void) setCheckBackground: (BOOL) checked
  73. {
  74. if(!checked)
  75. {
  76. [_btnCheck setImage:[UIImage imageNamed:@"uncheck_round"] forState:UIControlStateNormal];
  77. }
  78. else
  79. {
  80. [_btnCheck setImage:[UIImage imageNamed:@"check_round"] forState:UIControlStateNormal];
  81. }
  82. }
  83. #pragma mark - 处理单击手势
  84. -(void)handleSingleTap:(UIGestureRecognizer *)sender{
  85. [self initScrollView];
  86. UIWindow *window = self.window;
  87. [window addSubview:_scrollView];
  88. }
  89. -(void)closeView:(UITapGestureRecognizer*)tap{
  90. [_scrollView removeFromSuperview];
  91. }
  92. -(void)pinchGesAction:(UIPinchGestureRecognizer*)recognizer{
  93. NSLog(@"Pinch scale: %f", recognizer.scale);
  94. if (_scrollView.contentSize.width / _scrollView.frame.size.width > 4 && recognizer.scale >1) {
  95. return ;
  96. }
  97. if (recognizer.scale < 1 && _sImgView.frame.size.width / _scrollView.frame.size.width < 1 ) {
  98. _sImgView.frame = _scrollView.frame;
  99. return ;
  100. }
  101. _sImgView.transform = CGAffineTransformScale(_sImgView.transform, recognizer.scale, recognizer.scale);
  102. _scrollView.contentSize = recognizer.view.frame.size ;
  103. CGPoint point = CGPointMake(_scrollView.contentSize.width/2, _scrollView.contentSize.height/2);
  104. _sImgView.center = point;
  105. [_scrollView setContentOffset:CGPointMake(point.x - _scrollView.frame.size.width /2 , point.y - _scrollView.frame.size.height/2)];
  106. recognizer.scale = 1;
  107. }
  108. @end