Como determinar as coordenadas da imagem para uma grande imagem cortada dentro de um UIImageView?

StackOverflow https://stackoverflow.com/questions/1813432

Pergunta

Com relação ao iPhone SDK:

Eu tenho uma imagem de 512 x 512 pixels .png e quero exibi -la dentro de um UIImageView de 200 x 200 pixels com corte (em resolução nativa, sem zoom, ajuste ou rotação). Existe uma maneira de determinar as coordenadas da imagem que são visíveis dentro do UIImageView?

Por exemplo, se a imagem no centro exato da UIImageView, quero saber quais são as coordenadas da imagem nos pontos de UiimageView (0,0) e (200,200), que serão (156,156) e (356.356), respectivamente para a imagem que está sendo exibida.

Planejo a implementação das funções "PAN" e "Zoom" em algum momento, mas quero saber como resolver esse problema primeiro. A referência da classe UIImageView não parecia útil ... Eu esperava evitar o uso de um UIView, mas se isso for necessário, seguirei esse caminho.

Obrigado!

Foi útil?

Solução 2

Obrigado pela ajuda. A elaboração dos recursos do PAN/Zoom tornou -se trivial após a implementação do UIScrollView. Implementando o UIScrollView Deixe -me determinar as coordenadas que eu precisava com o myScrollView.bounds.origin.x e myScrollView.bounds.origin.y Valores ... O zoom ainda requer cálculo - como você declarou acima, mas estou no caminho certo agora.

Aqui está o código que eu usei para disponibilizar o UIScrollView (com base em várias fontes disponíveis na rede e neste site - Apple's ScrollViewSuite foi particularmente útil. Aqui está o código que usei no (void)viewDidLoad Seção do meu programa, espero que outros possam achar útil:

UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[imageArray objectAtIndex:0]]; //imageArray is an array/stack of images...
[self setMyImage:tempImageView]; //myImage is of type UIImageView
[myImage setTag:100]; //set this to an 'arbitrary' value so that when I update the scrollview I can remove the current image...
[tempImageView release];

myScrollView.contentSize = CGSizeMake(myImage.frame.size.width, myImage.frame.size.height);
myScrollView.maximumZoomScale = 10.0;
myScrollView.minimumZoomScale = 0.15;
myScrollView.clipsToBounds = YES;
myScrollView.delegate = self;

[myScrollView addSubview:myImage];

Outras dicas

Você está certo sobre o que você viu na referência do UIImageView - não há maneira fácil de fazer isso usando o UIImageView sozinho. Você precisaria levar em consideração as coisas como o ContentMode do UIImageView ou se limitar a calcular apenas a posição para um único UIViewContentMode.

No entanto, quando você acabar sendo implementando o PAN e o Zoom, usará um UIScrollView com um UIImageView como uma subjusta desse UIScrollView. Nesse ponto, seria mais sã dimensionar o seu UIImageView inicialmente para o tamanho de qualquer imagem que você exibir (poderia ser dinâmica). Você pode determinar onde está a imagem determinando onde a imagem Visão é, o que é algo que você pode realizar de maneira muito mais simples e com um pouco de matemática.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top