Pergunta

Eu tenho um UIImageView que exibe uma imagem maior. Ele parece estar centrado, mas eu gostaria de mover a imagem interior que UIImageView. Olhei para o MoveMe amostra da Apple, mas eu não conseguia descobrir como eles fazem isso. Parece que eles não têm sequer uma UIImageView para isso. Alguma idéia?

Foi útil?

Solução

Resposta original foi substituída por CoreAnimation em iOS4.

Assim como ouro Thumb diz: você pode fazer isso acessando CALayer do UIView. Especificamente sua contentRect:

A partir da a Apple Docs : o rectângulo, na unidade de espaço de coordenadas, que define a parte do conteúdo da camada que deve ser usado. Animatable.

Outras dicas

O que você precisa é algo como (por exemplo, mostrando a 30% até 30% do canto esquerdo superior da imagem original):

imageView.layer.contentsRect = CGRectMake(0.0, 0.0, 0.3, 0.3);

Descrição de "contentsRect": O rectângulo, na unidade de espaço de coordenadas, que define a porção do conteúdo da camada que devem ser usados.

Você quer exibir a imagem de modo que ele está contido dentro do UIImageView ? Nesse caso, basta alterar o contectMode de UIImageView para UIViewContentModeScaleToFill (se a relação de aspecto é irrelevante) ou UIViewContentModeScaleAspectFit (se você quiser manter a relação de aspecto)

No IB, isso pode ser feito, definindo o Modo no Inspector.

No código, isso pode ser feito como

yourImageView.contentMode = UIViewContentModeScaleToFill;

No caso de você deseja exibir a imagem grande como é dentro de um , o melhor e mais fácil maneira UIImageView de fazer isso seria ter a visualização da imagem dentro de um UIScrollView. Isso maneiras que você será capaz de zoom in e out na imagem e também movê-lo.

Espero que ajude.

Ele não soa como a amostra MoveMe faz nada parecido com o que você quer. O PlacardView em que é do mesmo tamanho que a imagem utilizada. A única mudança tamanho feito para ele é uma vista de transformar, o que não afeta a janela da imagem. Pelo que entendi, você tem uma imagem grande, e quer mostrar uma pequena janela para ele. Não há um método de classe simples de fazer isso, mas não é uma função que você pode usar para obter os resultados desejados:. CGImageCreateWithImageInRect (CGImageRef, CGRect) irá ajudá-lo

Aqui está um pequeno exemplo de usá-lo:

CGImageRef imageRef = CGImageCreateWithImageInRect([largeImage CGImage], cropRect);
[UIImageView setImage:[UIImage imageWithCGImage:imageRef]];
CGImageRelease(imageRef);

Muito obrigado. Eu encontrei uma solução muito simples que se parece com isso:

CGRect frameRect = myImage.frame;
CGPoint rectPoint = frameRect.origin;
CGFloat newXPos = rectPoint.x - 0.5f;
myImage.frame = CGRectMake(newXPos, 0.0f, myImage.frame.size.width, myImage.frame.size.height);

Eu só mover a moldura ao redor. Acontece que porções desse quadro sair da janela de visualização do iPhone, mas espero que isso não importa muito. Há uma máscara sobre ele, por isso não parece estranho. O usuário não totice como ele é feito.

Você pode fazer o mesmo por:

UIImageView *imgVw=[[UIImageView alloc]initwithFrame:CGRectMake(x,y,height,width)];     
imgVw.image=[UIImage imageNamed:@""];
[self.view addSubView imgVw];
imgVw.contentMode = UIViewContentModeScaleToFill;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top