圖片縮放

//自定義cell類,繼承于UICollectionViewCell

@interface MyCell :UICollectionViewCell

@property (nonatomic,retain) UIScrollView *scrollView;

@property (nonatomic,retain) UIImageView *showImgView;

@end

@implementation MyCell

- (id)initWithFrame:(CGRect)frame {

self= [super initWithFrame:frame];

if(self) {

[self addSubview:self.scrollView];

}

return self;

}

- (UIImageView *)showImgView {

if(!_showImgView) {

_showImgView = [[UIImageView alloc] init];

_showImgView.frame = self.bounds;

}

return _showImgView;

}

- (UIScrollView *)scrollView {

if(!_scrollView) {

_scrollView= [[UIScrollView alloc] initWithFrame:self.bounds];

_scrollView.delegate=self;

//設置圖片縮放比例

_scrollView.minimumZoomScale= 0.5f;

_scrollView.maximumZoomScale= 2.0f;

[_scrollView addSubview:self.showImgView];

}

return _scrollView;

}

#pragma mark --- UIScrollViewDelegate

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {

return _showImgView;

}

- (void)scrollViewDidZoom:(UIScrollView *)scrollView {

CGFloat offsetX = scrollView.bounds.size.width> scrollView.contentSize.width? (scrollView.bounds.size.width- scrollView.contentSize.width) * 0.5 : 0.0;

CGFloat offsetY = scrollView.bounds.size.height> scrollView.contentSize.height? (scrollView.bounds.size.height- scrollView.contentSize.height) * 0.5 : 0.0;

_showImgView.center = CGPointMake(scrollView.contentSize.width/2 + offsetX, scrollView.contentSize.height/2 + offsetY);

}


#import"MyCell.h"

#define WIDTH [UIScreen mainScreen].bounds.size.width

#define HEIGHT [UIScreen mainScreen].bounds.size.height

@interfaceViewController()

@property (nonatomic, retain) UICollectionView *collectionView;

@property (nonatomic, retain) NSMutableArray *imageArray;

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

//創(chuàng)建圖片

[self createImageArray];

//設置collectionView

[self.view addSubview:self.collectionView];

}

- (void)createImageArray {

_imageArray= [NSMutableArray array];

for(int i = 0; i<9; i++) {

UIImage *image = [UIImage imageNamed:[NSStringstringWithFormat:@"%d.jpg",i+1]];

[_imageArray addObject:image];

}

}

- (UICollectionView *)collectionView {

if(!_collectionView) {

//布局

UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];

layout.minimumLineSpacing = 0;

layout.minimumInteritemSpacing = 0;

[layout setItemSize:CGSizeMake(WIDTH,HEIGHT)];

layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0);

layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;

_collectionView= [[UICollectionView alloc] initWithFrame:self.view.frame collectionViewLayout:layout];

_collectionView.delegate = self;

_collectionView.dataSource = self;

_collectionView.pagingEnabled = YES;

//_collectionView.minimumZoomScale = 0.5f;

//_collectionView.maximumZoomScale = 2.0f;

[_collectionView registerClass:[MyCell class] forCellWithReuseIdentifier:@"cell"];

}

return _collectionView;

}

//- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {

// ???int index = _collectionView.contentOffset.x / WIDTH;

// ???MyCell *cell = self.collectionView.subviews[index];

// ???return cell.showImgView;

//}

- (NSInteger)collectionView:(UICollectionView*)collectionView numberOfItemsInSection:(NSInteger)section {

return _imageArray.count;

}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {

MyCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];

//在cell上顯示圖片

cell.showImgView.image= [_imageArray objectAtIndex:indexPath.row];

//對cell上的圖片大小進行操作

[self resetImageWithImgView:cell.showImgView];

//每次加載視圖時讓滑動視圖的縮放系數為1

cell.scrollView.zoomScale= 1.0f;

returncell;

}

- (void)resetImageWithImgView:(UIImageView *)imgView {

//獲取圖片的原始寬高

CGSize size = imgView.image.size;

//獲取縮放比例

CGFloat xScale = WIDTH/ size.width;

CGFloat yScale = HEIGHT/ size.height;

//以小的為標準

if(xScale < yScale) {

CGRect rect = imgView.frame;

rect.size.width=WIDTH;

rect.size.height = size.height * xScale;

imgView.frame= rect;

}else{

CGRect rect = imgView.frame;

rect.size.height=HEIGHT;

rect.size.width = size.width* yScale;

imgView.frame = rect;

}

//居中

imgView.center = self.view.center;

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容