1. 程式人生 > >uiimageView 的圖片拉伸問題的解決辦法

uiimageView 的圖片拉伸問題的解決辦法

設定 UIImageView 的contentMode屬性,根據自己的需要選擇下面

 UIViewContentModeScaleToFill,

    UIViewContentModeScaleAspectFit,      // 原比例,不變形,

    UIViewContentModeScaleAspectFill,     // 等比例填充

    UIViewContentModeRedraw,              // redraw on bounds change (calls -setNeedsDisplay)

    UIViewContentModeCenter,              // contents remain same size. positioned adjusted.
UIViewContentModeTop, UIViewContentModeBottom, UIViewContentModeLeft, UIViewContentModeRight, UIViewContentModeTopLeft, UIViewContentModeTopRight, UIViewContentModeBottomLeft, UIViewContentModeBottomRight,

我們都知道在iOS中,每一個UIImageView都有他的frame大小,但是如果圖片的大小和這個frame的大小不符合的時候會怎麼樣呢?在預設情況,圖片會被壓縮或者拉伸以填滿整個區域。

通過檢視UIView的屬性可以知道,view的contentMode屬性可以用來控制圖片的顯示情況。下面的設定可以讓圖片進行居中顯示。
1

imageView.contentMode =  UIViewContentModeCenter;

這個居中是包括了,橫向和縱向都是居中。圖片不會拉伸或者壓縮,就是按照imageView的frame和圖片的大小來居中顯示的。

這裡有兩種情況:

1、圖片比view的區域更大。這個時候會擷取圖片的中間部位顯示在frame區域裡面。

2、圖片比view的區域更小。這個時候圖片會完整的顯示在frame的中間位置。

如果在預設情況,圖片的多出來的部分還是會顯示螢幕上。如果不希望超過frame的區域顯示在螢幕上要設定。clipsToBounds屬性。
1

imageView.clipsToBounds  = YES;

最後一個問題,在iphone的retina螢幕上面,必須要設定,contentScaleFactor屬性。這個屬性的預設值是1。二對應的retina螢幕需要是2.可以通過下面的方式來設定:
1

    [imageView setContentScaleFactor:[[UIScreen mainScreen] scale]];

但是用:
1

    imageView.contentMode =  UIViewContentModeCenter;

也有他的問題,就是在圖片不規則的時候,而且圖片的寬或者高比frame的寬高更小的時候,會出現空白的情況。

為了解決這種問題可以設定:
1

    imageView.contentMode =  UIViewContentModeScaleAspectFill;

這樣圖片會拉伸或者壓縮以適應frame的邊界,而且是適應更小的邊,這樣可以達成的效果是,圖片適應最小的邊鋪開顯示,更大的邊會超出frame,如果設定了clipsToBounds屬性為YES,那麼更大的邊就會被截斷。這樣達成更好的居中顯示效果,完整的程式碼如下:
view source

1
    UIImage *pic = [ UIImage imageNamed:@"IMG_0404.PNG"];
2
    UIImageView *imageView   = [[UIImageView alloc] initWithFrame:CGRectMake(20, 20, 240, 100 )];
3
    [imageView setImage:pic];
4
    [imageView setContentScaleFactor:[[UIScreen mainScreen] scale]];
5
    imageView.contentMode =  UIViewContentModeScaleAspectFill;
6
    imageView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
7
    imageView.clipsToBounds  = YES;

相關推薦

uiimageView圖片問題的解決辦法

設定 UIImageView 的contentMode屬性,根據自己的需要選擇下面 UIViewContentModeScaleToFill, UIViewContentModeScaleAspectFit, // 原比例,不變形,

安卓新增背景圖片解決圖片問題

問題描述: 當我們在android layout佈局檔案設定背景圖片只需要加上 android:background="@drawable/ic_bg"  就可以了設定ic_bg為背景的圖片了 然而這樣設定後當圖片較小時會發現 圖片被拉伸了,失真。     解決方法

Android Camera 自動適配多種螢幕,解決預覽照片和儲存的圖片

最近公司需要做一個手機自拍照的功能,由於之前有做過類似手機拍照的功能,所以很快就實現了自定義手機拍的功能。但是後面發現部分手機出現預覽照片拉伸和儲存的圖片拉伸的情況。然後百度了一下,發現原理很好理解,也有一堆demo,然而並沒有解決拉伸的情況。下面總結一下我的解決方法,希望對

使用JavaScript解決網頁圖片問題

個人部落格站已經上線了,網址 www.llwjy.com ~歡迎各位吐槽~-------------------------------------------------------------------------------------------------   

Glide圖片解決方法

在使用Glide過程中會出現圖片被拉伸的情況,經查開始使用了place holde的緣故,有3種簡單方法: 1、取消使用place holde: Glide.with(context).load(resId). into(imageView); 2、使用place ho

詳解onMeasure()(二)--利用onMeasure測量來實現圖片永不變形,解決螢幕適配問題

原文地址 :http://blog.csdn.net/cyp331203/article/details/45027641   上一篇文章詳細講解了一下onMeasure/measure方法在Android自定義控制元件時的原理和作用,參看博文:Androi

Android自定義控制元件系列八:詳解onMeasure()(二)--利用onMeasure測量來實現圖片永不變形,解決螢幕適配問題

        上一篇文章詳細講解了一下onMeasure/measure方法在Android自定義控制元件時的原理和作用,參看博文:Android自定義控制元件系列七:詳解onMeasure()方法中如何測量一個控制元件尺寸(一),今天就來真正實踐一下,讓這兩個方法大顯神威來幫我們搞定圖片的螢幕適配問題。

UIImageView圖片

使用小圖片當變長輸入框或類似QQ聊天文字背景效果時,需要拉伸圖片。UIImage提供了三個可完成此任務的方法: resizableImageWithCapInsets:resizableImageWithCapInsets:resizingMode:stretchableImageWithLeftCapWi

C# 解決DrawImage繪製圖片產生漸變

方法一: ImageAttributes ImgAtt = new ImageAttributes(); ;                 ImgAtt.SetWrapMode(System.Drawing.Drawing2D.WrapMode.TileFlipXY)

App啟動時白屏&使用BitmapDrawable解決啟動頁背景圖片

一,App啟動時,會白屏或者黑屏,採用如下方法解決: 1.啟動頁的Activity設定style <activity android:name=".activity.SplashActivity" an

ios25---圖片

哪些 小碼哥 style n) named @property name insets 保護 控制器: // // ViewController.m // 12-圖片的拉伸問題 // // Created by xiaomage on 15/12/30. //

iOS圖片技巧

div 大小 hle lstat log 需要 sets width pin iOS圖片拉伸技巧 本文目錄 一、iOS 5.0之前 二、iOS 5.0 三、iOS 6.0 縱觀移動市場,一款移動app,要想長期在移動市場立足,最起碼要包含以下幾個要素:實用的功能、極強的

微信圖片防盜鏈解決辦法

com 圖片 是你 白名單 輸出 ica lag pic 如果 原因: 官方輸出圖片的時候,判斷了來源(Referer),就是從哪個網站訪問這個圖片,如果是你的網站去加載這個圖片,那麽Referer就是:你的網站地址;如果我們的網站地址不在官方的白名單內,所以就看不到圖

背景圖片,計算屏幕寬度和獲取控件寬高

屏幕寬度 ack context splay ots focus pri bool thp 背景圖片拉伸: 那麽如果我們想在Activity的onCreate方法或者是onReusme方法獲取組件的寬高怎麽辦呢?這裏提供了以下的五種方式:http://blog.csdn.

input file 重復上傳同一張圖片失效的解決辦法

strong bug text 更換 失效 重復 .... inpu mage 項目中遇到上傳圖片,需要本地預覽效果,測試時無意間發現,當選擇A圖片,然後更換為B圖片,完全正常;當選擇A圖片,取消該圖片,再測選擇A圖片後,發現不會再生成預覽效果,出現了bug; 查找相關資料

圖片,改變長寬比

bsp anti resize imp nbsp 拉伸 cpp port res 圖片拉伸,改變長寬比 from PIL import Image logo=‘fugu.png‘ mid_icon = Image.open(logo) mid_icon_w, mi

圖片

圖片 ger space convert -s con str view 圖片拉伸 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 19.0px Menlo; color: #ffffff; background-color:

koa2學習之旅----處理上傳圖片路徑的解決辦法

console.log(ctx.req.file.path.substring(6)) // 單獨處理圖片上傳路徑,擷取public,防止圖片找不到,教程中的方法直接暴露後臺檔案是大忌,雖然可以通過seo手段處理 let imgurlSubstring = ctx.req.file.path

css 如何讓背景圖片填充避免重複顯示

如何讓背景圖片拉伸填充,這個問題聽起來似乎很簡單。但是很遺憾的告訴大家。不是我們想的那麼簡單。  比如一個容器(body,div,span)中設定一個背景。這個背景的長寬值在css2.1之前是不能被修改的。  所以實際的結果是隻能重複顯示,所以出現了repeat,repeat-x

android Zxing掃碼二維碼解決

Zxing掃描二維碼: 2、可能是原始碼庫不同,我這邊在 CameraConfigurationUtils 裡面的  findBestPreviewSizeValue 修改尺寸 3、修改的位置和程式碼: public static Point findBestPre