2017-04-10 18 views
1

私はUIViewにImageviewを追加し、プロパティAspectToFitを設定しました。アプリケーションの要件によると、私はイメージビューにもう1つイメージを追加する必要があります。画像ビューと画像アスペクト比の差

iPhone 6s Plus

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プラス、iPone 7プラス)を除き、すべてのデバイスに正常に動作しています。私が見ることができるように、プラスサイズのデバイスでのみ問題があります。

イメージビューと適切なイメージの差や比率を計算する方法はありますか? アドバイスをお願いします。

私たちは、古いイメージのサイズを計算することによって、新しいイメージを追加し、要件ごとにUIViewのに追加することができiPhone 5s

+0

あなたが直面している正確な問題は明確ではありません。 – Shubhank

+0

@ Shubhank私は自分の質問を編集し、2つの画像を添付しました.1つはiPhone 5s用で、他はiPhone 6s Plus用です。あなたが見ることができる、qrcodeの画像の位置はuiimageviewがアスペクトフィッティング後にuiimageviewで開始するように正確ですが、iPhone 6s Plusではqrcodeの位置が正しくありません。 –

+0

'width'と' height'の値はどこに割り当てられていますか? – Shubhank

答えて

1

添付画像を参照してください。

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; 
} 
関連する問題