Ios 在自定义UICollectionViewcell中缩放图像视图
在自定义Ios 在自定义UICollectionViewcell中缩放图像视图,ios,objective-c,iphone,uiscrollview,zooming,Ios,Objective C,Iphone,Uiscrollview,Zooming,在自定义UICollectionViewCell中缩放UIImageView时,将缩放整个单元格。我希望将UIImageView放大为iPhone照片中的照片库 #define widthOfBlackTransVw 30 #define ZOOM_STEP 2.0 @implementation DetailedImageCell - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame];
UICollectionViewCell
中缩放UIImageView
时,将缩放整个单元格。我希望将UIImageView
放大为iPhone照片中的照片库
#define widthOfBlackTransVw 30
#define ZOOM_STEP 2.0
@implementation DetailedImageCell
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self.scrollView = [UIScrollView new];
self.scrollView.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
self.scrollView.delegate = self;
self.scrollView.userInteractionEnabled = YES;
self.scrollView.bouncesZoom = YES;
[self addSubview:self.scrollView];
self.imageView = [UIImageView new];
self.imageView.frame = self.scrollView.frame;
self.imageView.userInteractionEnabled = YES;
self.imageView.clipsToBounds = YES;
[self.scrollView addSubview:self.imageView];
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
UITapGestureRecognizer *twoFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTwoFingerTap:)];
[singleTap setNumberOfTapsRequired:1];
[doubleTap setNumberOfTapsRequired:2];
[twoFingerTap setNumberOfTouchesRequired:2];
//Adding gesture recognizer
[self.imageView addGestureRecognizer:singleTap];
[self.imageView addGestureRecognizer:doubleTap];
[self.imageView addGestureRecognizer:twoFingerTap];
[singleTap requireGestureRecognizerToFail:doubleTap];
float minimumScale = 1.0;
self.scrollView.maximumZoomScale = 6.0;
self.scrollView.minimumZoomScale = minimumScale;
self.scrollView.zoomScale = minimumScale;
[self.imageView setContentMode:UIViewContentModeScaleAspectFit];
[self.scrollView setContentSize:self.imageView.bounds.size];
}
return self;
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return self.imageView;
}
- (void)scrollViewDidZoom:(UIScrollView *)aScrollView
{
CGFloat offsetX = (self.scrollView.bounds.size.width > self.scrollView.contentSize.width)?
(self.scrollView.bounds.size.width - self.scrollView.contentSize.width) * 0.5 : 0.0;
CGFloat offsetY = (self.scrollView.bounds.size.height > self.scrollView.contentSize.height)?
(self.scrollView.bounds.size.height - self.scrollView.contentSize.height) * 0.5 : 0.0;
self.imageView.center = CGPointMake(self.scrollView.contentSize.width * 0.5 + offsetX,
self.scrollView.contentSize.height * 0.5 + offsetY);
}
- (void)handleDoubleTap:(UIGestureRecognizer *)gestureRecognizer {
// zoom in
float newScale = [self.scrollView zoomScale] * ZOOM_STEP;
if (newScale > self.scrollView.maximumZoomScale){
newScale = self.scrollView.minimumZoomScale;
CGRect zoomRect = [self zoomRectForScale:newScale withCenter:[gestureRecognizer locationInView:gestureRecognizer.view]];
[self.scrollView zoomToRect:zoomRect animated:YES];
}
else{
newScale = self.scrollView.maximumZoomScale;
CGRect zoomRect = [self zoomRectForScale:newScale withCenter:[gestureRecognizer locationInView:gestureRecognizer.view]];
[self.scrollView zoomToRect:zoomRect animated:YES];
}
}
- (void)handleTwoFingerTap:(UIGestureRecognizer *)gestureRecognizer
{
float newScale = [self.scrollView zoomScale] / ZOOM_STEP;
CGRect zoomRect = [self zoomRectForScale:newScale withCenter:[gestureRecognizer locationInView:gestureRecognizer.view]];
[self.scrollView zoomToRect:zoomRect animated:YES];
}
- (CGRect)zoomRectForScale:(float)scale withCenter:(CGPoint)center {
CGRect zoomRect;
// the zoom rect is in the content view's coordinates.
// At a zoom scale of 1.0, it would be the size of the self.scrollView's bounds.
// As the zoom scale decreases, so more content is visible, the size of the rect grows.
zoomRect.size.height = [self.scrollView frame].size.height / scale;
zoomRect.size.width = [self.scrollView frame].size.width / scale;
// choose an origin so as to get the right center.
zoomRect.origin.x = center.x - (zoomRect.size.width / 2.0);
zoomRect.origin.y = center.y - (zoomRect.size.height / 2.0);
return zoomRect;
}
单元格额外空间随
UIImage
一起缩放。我只需要缩放UIImageView
你想使用点击手势方法缩放图像是,也可以使用按压按钮如果你使用按压手势,你想设置最小和最大的缩放级别检查我设置的代码。我可以缩放所有内容,但我的问题是整个单元格正在缩放。在self.imageView.frame=self.scrollView.frame中设置帧;试试看