Разница между изображением и соотношением сторон изображения
Я добавил Imageview в UIView и установил свойство AspectToFit. В соответствии с требованиями приложения, мне нужно добавить еще одно изображение в окне просмотра изображений.
float width;
float height;
float x;
float y;
CGSize imageViewSize = self.getImageView.bounds.size;// self.getImageView.frame.size;
CGSize imageSize = self.getImage.size;
CGFloat minFactor = imageViewSize.width / imageSize.width;
if (imageViewSize.height / imageSize.height < minFactor)
{
minFactor = imageViewSize.height / imageSize.height;
}
CGRect frame = self.getImageView.frame;
NSLog(@"view height..%@",NSStringFromCGRect (frame));
CGSize resultSize = CGSizeMake(minFactor * imageSize.width, minFactor * imageSize.height);
UIImage *newimage = [self imageWithImage:self.getImage scaledToSize:resultSize];
float mainwidth = imageViewSize.width;
float mainheight = imageViewSize.height;
float imagewidth = newimage.size.width;
float imageheight = newimage.size.height;
_widthdiff = mainwidth-imagewidth;
_heightdiff = mainheight-imageheight;
x = self.view.frame.size.width-width-0-_widthdiff/2;
y = self.view.frame.size.height-height-116-_heightdiff/2;
imageview = [[UIImageView alloc]
initWithFrame:CGRectMake(x, y, width, height)];
[imageview setContentMode:UIViewContentModeScaleAspectFit];
Этот код работает нормально для всех устройств, кроме iPhone (iPhone 6 Plus, iPone 7 Plus). Как я вижу, есть проблема только в плюс размер устройств.
Есть ли другое для расчета разницы или соотношения между просмотром изображения и правильным изображением? Пожалуйста посоветуй.
1 ответ
Мы можем добавить новое изображение, рассчитав размер старого изображения, а затем добавить его в UIView в соответствии с требованием.
CGSize imageViewSize = self.getImageView.frame.size;
CGSize imageSize = self.getImage.size;
CGFloat minFactor = imageViewSize.width / imageSize.width;
if (imageViewSize.height / imageSize.height < minFactor)
{
minFactor = imageViewSize.height / imageSize.height;
}
CGSize resultSize = CGSizeMake(minFactor * imageSize.width, minFactor * imageSize.height);
UIImage *newimage = [self imageWithImage:self.getImage scaledToSize:resultSize];
self.duplicateimageview = [[UIImageView alloc]
initWithFrame:CGRectMake(self.view.frame.size.width/2-newimage.size.width/2, self.view.frame.size.height/2-newimage.size.height/2, newimage.size.width, newimage.size.height)];
[self.view addSubview:self.duplicateimageview];
self.duplicateimageview.image = newimage;
- (UIImage*)imageWithImage:(UIImage*)image
scaledToSize:(CGSize)newSize;
{
UIGraphicsBeginImageContext( newSize );
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}