簡體   English   中英

UIImageView內容模式不起作用

[英]UIImageView content mode is not working

我有一個大圖像(1920 * 1080)和一個較小的UIImageView(320 * 568),在故事板上縮放到全屏尺寸。

現在我想顯示這個大圖像全屏大小,但適合UIImageView。

我已經嘗試了所有內容模式,但它們都無法正常工作。 每次它只顯示圖像的左上角全屏大小。

 [self.imageView setFrame:self.view.bounds];
 [self.imageView setContentMode:UIViewContentModeScaleAspectFit] ;
 [self.imageView setImage:image] ;
 [self.view insertSubview:_imageView aboveSubview:_previewView] ;

那么在我的情況下可能出現什么問題? 可能是Xcode故事板配置錯誤?

謝謝。

如果您只看到ImageView中的圖像頂角,則可能的原因是:您的ImageView幀超出屏幕大小或未設置內容模式。 在您的代碼中,您將框架設置為超級視圖的邊界。 如果您使用的是自動布局,請檢查自動布局是否設置正確。 如果沒問題,請在設置框架之前嘗試設置UIImageView ContentMode。

// Setting the content mode.
self.imageView.contentMode = UIViewContentModeScaleAspectFit;
// Now set the frame.
[self.imageView setFrame:self.view.bounds];

其他解決方案是您可以縮小圖像以適合您的ImageView。 為此,您可以使用以下功能:

- (UIImage *)scaleImage:(UIImage *)orginalImage
{
    float widthFactor = photoImageView.frame.size.width / orginalImage.size.width;
    CGSize destinationSize = CGSizeMake(orginalImage.size.width * widthFactor,orginalImage.size.height * widthFactor);
    UIGraphicsBeginImageContext(destinationSize);
    [orginalImage drawInRect:CGRectMake(0,0,destinationSize.width,destinationSize.height)];
    UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    photoImageView.image = scaledImage;
    return scaledImage;
}

有一個問題是CIImage以某種方式不尊重contentMode(至少在某些設備/ iOS版本上)。 將CIImage轉換為CGImage以使其工作。

Swift 3代碼:

func convertCIImageToCGImage(inputImage: CIImage) -> CGImage?
{
    let context = CIContext(options: nil)
    if let cgImage = context.createCGImage(inputImage, from: inputImage.extent)
    {
        return cgImage
    }
    return nil
}

嘗試這個

[self.imageView setFrame:self.view.bounds];
self.imageView.contentMode = UIViewContentModeScaleAspectFit; 
self.imageView.clipsToBounds = YES;
[self.imageView setImage:image] ;
[self.view insertSubview:_imageView aboveSubview:_previewView] ;

工作正常.. :)

在我的情況下,我解決了這個刪除一些約束,調整我錯誤設置的imageview。

檢查您的imageview約束,嘗試刪除所有這些約束

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM