Aşağıdakiler UIImageView kullanılan UIViewContentModeAspectFit varsayarak sorunuza cevap verecektir:
Sen UIImageView içindeki görüntünün görüntü boyutlandırma kabul etmek gerekir. Bu, contentMode'u nasıl ayarlayacağınıza bağlıdır. Açıklamanıza göre, UIViewContentModeAspectFit kullandığınızı varsayalım. Ortaya çıkan görüntü UIImageView'da da ortalanacak ve bu yüzden hesaplama için bunu dikkate almanız gerekiyor. Üç içerik modları arasındaki farklar daha iyi anlaşılması için,
-(CGRect)calculateClientRectOfImageInUIImageView:(UIImageView *)imgView
{
CGSize imgViewSize=imgView.frame.size; // Size of UIImageView
CGSize imgSize=imgView.image.size; // Size of the image, currently displayed
// Calculate the aspect, assuming imgView.contentMode==UIViewContentModeScaleAspectFit
CGFloat scaleW = imgViewSize.width/imgSize.width;
CGFloat scaleH = imgViewSize.height/imgSize.height;
CGFloat aspect=fmin(scaleW, scaleH);
CGRect imageRect={ {0,0} , { imgSize.width*=aspect, imgSize.height*=aspect } };
// Note: the above is the same as :
// CGRect imageRect=CGRectMake(0,0,imgSize.width*=aspect,imgSize.height*=aspect) I just like this notation better
// Center image
imageRect.origin.x=(imgViewSize.width-imageRect.size.width)/2;
imageRect.origin.y=(imgViewSize.height-imageRect.size.height)/2;
// Add imageView offset
imageRect.origin.x+=imgView.frame.origin.x;
imageRect.origin.y+=imgView.frame.origin.y;
return(imageRect);
}
, aşağıya bakınız:
bu bilgi almak için doğrudan bir API yoktur. Görüntü görünümünün çerçevesine, görüntü boyutuna ve görüntü görünümünün 'contentMode'na göre kendiniz hesaplamanız gerekir. – rmaddy
@rmaddy Bu söylenecek çok zor bir şey gibi geliyor. Onu daha basit bir şekilde kesmenin bir yolu yok mu? –
Görsel ve yükseklik elde etmek için Imageview.image.size.width/height öğelerini kullanabilirsiniz. Origin.x ve y properties – Eyeball