Como determinar as coordenadas da imagem para uma grande imagem cortada dentro de um UIImageView?
-
06-07-2019 - |
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!
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.