Red de conocimiento informático - Material del sitio web - Cómo escalar UIImageView proporcionalmente

Cómo escalar UIImageView proporcionalmente

La escala proporcional debe realizarse mediante programación. Puede consultar el siguiente programa:

@interface HYShowImageView: UIScrollView

//Muestra la imagen en formato grande

.

-(void) showImage:(UIImage*)image inView: (UIView *)parentsView fromRect:(CGRect)rect;

@end

-(void)showImage: (UIImage *)imagen inView :(UIView *)parentsView fromRect:(CGRect)rect

{

_oldRect = rect;

[self setFrame:CGRectMake( 0, 0, PHOTOWIDTH, PHOTOHEIGHT) ];

self.showsHorizontalScrollIndicator = NO;

self.showsVerticalScrollIndicator = NO;

UIImageView *showView = [[ UIImageView alloc] initWithFrame:_oldRect];

showView.contentMode = UIViewContentModeScaleAspectFit;

[UIView animateWithDuration:0.5f animaciones:^{

[showView setFrame:CGRectMake( 0, 0, ANCHO FOTO, ALTURA FOTO)];

}];

[self setBackgroundColor:color_with_rgba(0, 0, 0, 1)];

[parentsView addSubview: self];

[showView setTag:'show'];

[showView setImage:image]; //Este lugar también puede usar imágenes de la web

[self addSubview:showView];

// Agregar dos gestos

showView.userInteractionEnabled = YES;

UITapGestureRecognizer* singleTap = [[ UITapGestureRecognizer alloc ] initWithTarget:self action:@selector(handleSingleViewTap:)];

[ self addGestureRecognizer:singleTap];

UIPinchGestureRecognizer* pinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget.self action :@ selector(handlePinchView:)];

[self addGestureRecognizer: pinchGest

ure];

}

Se agregaron dos gestos, un clic para cancelar y un clic para hacer zoom

//Eliminar la vista de imagen

-(void)handleSingleViewTap:(UITapGestureRecognizer *)sender

{

[self setZoomScale:1.0 animado:NO];

[ UIView animateWithDuration:0.5 f animaciones:^{

UIImageView *showView = (UIImageView *)[self viewWithTag:'show'];

showView.frame = _oldRect;

self .backgroundColor = color_with_rgba(0, 0, 0, 0.0);

} Completado: ^(BOOL terminado){

[self removeFromSuperview];

} ];

}

// Escalar imagen

-(void)handlePinchView: (UIPinchGestureRecognizer *)sender

{

UIImageView *imageView = (UIImageView *)[self viewWithTag:'show'];

if ([estado del remitente] == UIGestureRecognizerStateBegan) {

_ imageHWScale = imageView .image.size.height/imageView.image.size.width;

_beganScale = self.zoomScale;

}

[self setZoomScale:_beganScale * remitente .scale];

if ([estado del remitente] == UIGestureRecognizerStateEnded) {

[self scrollViewEnd];

}

}

- (void)scrollViewEnd

{

if (self.zoomScale < 1.0) {

[self setZoomScale:1.0 animado: SÍ];

self.contentOffset = CGPointMake(0, 0);

} else if (self.zoomScale > 3.0) {

[self setZoomScale: 3.0 animado:SÍ];

}

}

}