1. 程式人生 > >根據網路圖片的size大小設定UIImageView的大小

根據網路圖片的size大小設定UIImageView的大小

有時候在設定UIImageView的大小時候需要根據UIimage的長寬比來自動設定,不讓圖片原比例失真。

如果是從本地獲取到的圖片,[UIImageimageNamed:@""];

這樣就可以拿到image了,從而獲取到image的size。但大多數時候我們都是網路請求拿到的圖片,

我們需要

NSData *data = [NSData dataWithContentsOfURL:url];

image = [UIImageimageWithData:data];

這樣來得到image,但是在網路慢的情況下,這種同步的請求可能會讓執行緒卡住。

一般情況下我們都是使用SDWebImage這個第三方來載入圖片的。但都是用UIimageView來調Sd_webImage 這樣的方法直接設定,而不是拿到image後再去設定UIimageView的image,這樣我們就沒辦法先得到size設定好UIimageView的大小再去設定image。

在網上找到一個方法解決了這個問題,就是在SDWebImage 中有一個獲取快取的方法,先判斷SDWebImage有沒有快取這個圖片,有的話就獲取,沒有再使用

NSData *data = [NSData dataWithContentsOfURL:url];

image = [UIImageimageWithData:data];

來獲取

程式碼如下,

//顯示單張圖片時,固定寬度。

    __block CGFloat itemW = 200;

    __block CGFloat itemH = 0;

    if (_photoDataArray.count == 1) {

        UIImageView * imageView = [[UIImageView alloc] init];

        NSURL * url = [NSURL URLWithString:_photoDataArray.firstObject];

[imageView sd_setImageWithURL:url placeholderImage:[UIImage imageNamed:@"placeHolder.jpg"]];

SDWebImageManager *manager = [SDWebImageManager sharedManager];

        BOOL existBool = [manager diskImageExistsForURL:url];//判斷是否有快取

        UIImage * image;

        if (existBool) {

            image = [[manager imageCache] imageFromDiskCacheForKey:url.absoluteString];

        }else{

            NSData *data = [NSData dataWithContentsOfURL:url];

            image = [UIImage imageWithData:data];

        }

//根據image的比例來設定高度

        if (image.size.width) {

            itemH = image.size.height / image.size.width * itemW;

            if (itemH >= itemW) {

                itemW = 120;

                itemH = image.size.height / image.size.width * itemW;

            }

        }


效果如下,


相關推薦

根據網路圖片size大小設定UIImageView大小

有時候在設定UIImageView的大小時候需要根據UIimage的長寬比來自動設定,不讓圖片原比例失真。 如果是從本地獲取到的圖片,[UIImageimageNamed:@""]; 這樣就可以拿到image了,從而獲取到image的size。但大多數時候我們都是網路請求拿

根據桌面大小設定窗體大小

實現效果:     知識運用:   獲取桌面大小時,主要用到了Screen類: 表是單個系統上的一個或多個顯示裝置   其PrimaryScreen屬性用來獲取主顯示 返回一個Screen物件   而呼叫Screen物件的WorkingArea屬性可以獲取顯示器的工作區  實現

移動端根據裝置大小設定字型大小(居於案例的理解擴充套件)

1、問題描述: 拿到公司裡以前寫好的網頁檢視,發現它的CSS中有這樣一些東西: /*裝置豎屏時的樣式*/ @media all and (orientation : portrait){     .video_bg{         position:fixed;     

js根據手機螢幕寬度自動設定字型大小

(function(doc,win){ var docEl = doc.documentElement, //文件根標籤 resizeEvent = 'orientation

Android 根據網路圖片URL轉Bitmap物件

/** * 根據圖片的url路徑獲得Bitmap物件 * @param url * @return */ private Bitmap returnBitmap(String url) {

Android 根據手機的螢幕的大小設定圖片的等比例縮放

最近用到把一個圖片繪製到畫布上,然後用畫筆做標記,但是獲取的是圖片的寬和高,這樣繪製出來的無法完全匹配成全屏,下面記錄一個方法等比例了縮放: /** * * @param bm 傳入的bitmap * @param newWidth 指定

Android 根據螢幕的寬度來設定圖片大小

比如 我要求 兩張圖片橫著螢幕中。但是要適應不同的螢幕 ImageView mImgZIv; DisplayMetrics dm = new DisplayMetrics(); getWindo

IOS -- 獲取本地圖片網路圖片大小size

// 獲取圖片的size CGSize size = [UIImage imageNamed:@"regStep2_sex"].size;  獲取網路圖片的尺寸: // 根據圖片url獲取圖片尺寸 +(CGSize)getImageSizeWithURL:

基於 TextView 1.直接設定 selector 背景 2.直接設定 drawableLeft 大小 3.圓角,圓形,背景/邊框/文字根據狀態變色

RTextView 專案地址:RuffianZhong/RTextView  簡介:基於 TextView 1.直接設定 selector 背景 2.直接設定 drawableLeft 大小 3.圓角,圓形,背景/邊框/文字根據狀態變色 更多:作者  &nb

openoffice轉excel為pdf檔案,根據excel檔案大小設定pdf頁面大小,只適用一個sheet的情況

1、maven注入連線openoffice的Jar和poi         <dependency>             <

iOS 網路圖片大小自適應

基於SDWebImage實現: __weak typeof(self)weakSelf = self; [self.imageView sd_setImageWithURL:[NSURL URLWithString:gM1.imageUrl] completed:^(UIImage * _N

移動端設定html的font-size從而設定rem的大小

(function(){ var colCount = 20; // 設定列寬 var colWidth = document.documentElement.clientWidth / colCo

根據螢幕大小設定字型

public static int adjustFontSize(int screenWidth, int screenHeight){ if (screenWidth <=

android圖片尺寸大小設定

貼上程式碼,以後直接複製貼上使用,不用再計算,再百度了!! 方法一:(按照圖片尺寸設定、方法中viewRootBanner為圖片或者裝載圖片的控制元件banner) 例如:750*286尺寸 的圖片 //設定圖片寬高比 float scale = (float) 750

[LeetCode] Set Intersection Size At Least Two 設定交集大小至少為2

An integer interval [a, b] (for integers a < b) is a set of all consecutive integers from a to b, including a and b. Find the minimum size of a set S

Markdown-圖片設定大小,居中)

圖片位置-居左/居中/居右 利用markdown在編寫文件時插入圖片是預設靠左,有些時候將圖片設定為居中時可以更加的美觀,這時就需要在圖片的資訊前邊新增如下程式 <div align=center>![這裡寫圖片描述](http:...)

Go web開發判斷table裡元素的大小,並根據資料正負或大小設定不同樣式

問題描述: 比如新浪財經美股行情中心,漲跌額和漲跌幅,正數顯示紅色,負數顯示綠色 在用Go語言開發時,如何實現這樣的效果? 第一種方法:不使用js Go語言內建了一些進行模板渲染的函式,在官方原始碼/src/text/template/funcs.go中,專門用於GoWeb模板

CSDN-Markdown-圖片設定大小,居中)

利用markdown在編寫文件時插入圖片是預設靠左,有些時候將圖片設定為居中時可以更加的美觀,這時就需要在圖片的資訊前邊新增如下程式 <div align=center>![這裡寫圖片描述](http:... 如果想將圖片位於右側,只需要將ce

HTML5基礎加強css樣式篇(背景圖大小設定:background-size)(三十九)

1.background-size屬性: <!DOCTYPE html> <html lang="en"> <head> <meta charset=

drawleft,textview、EditText中圖片大小設定

很多時候我們在textview或者edittext等的控制元件裡面設定圖片,比如搜尋。 如果想要改變圖片的大小,只要在程式碼裡面設定: //比如drawleft設定圖片大小 //獲取