溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

iOS如何固定UITableView中cell.imageView.image的圖片大小

發(fā)布時(shí)間:2020-09-23 14:55:45 來源:腳本之家 閱讀:168 作者:傅hc 欄目:移動(dòng)開發(fā)

前言

凡是進(jìn)行iOS開發(fā)的,基本上都會(huì)遇到要展示列表,或者即使不是標(biāo)準(zhǔn)列表,但由于數(shù)量不固定,也需要如同列表一樣從上往下顯示、加載的情況。這些,都繞不過對UITableView的使用。

在iOS開發(fā)中UITableView可以說是使用最廣泛的控件,我們平時(shí)使用的軟件中到處都可以看到它的影子,類似于微信、QQ、新浪微博等軟件基本上隨處都是UITableView。當(dāng)然它的廣泛使用自然離不開它強(qiáng)大的功能。

我們經(jīng)常在開發(fā)過程中會(huì)用到默認(rèn)UITableView的cell.imageView.image,如果圖片尺寸剛好跟我們想要的尺寸一樣的話倒也相安無事,但總是有意外的,經(jīng)常從接口獲取的圖片尺寸大小是不固定的

例如下圖1-1:

iOS如何固定UITableView中cell.imageView.image的圖片大小
圖1-1

圖片的尺寸大于cell的高度,所以就被“撐爆”了,顯得非常不美觀、和諧,如果cell的高度不固定,圖片尺寸又不同,那效果就更加難看了,那我們怎么做呢?

你們肯定有多種解決方法了:

1、自定義cell(如果簡單的cell的話這個(gè)有點(diǎn)麻煩,又要新建cell文件····)

2、利用UIGraphicsBeginImageContextWithOptions函數(shù)來處理(目前為止我覺得最簡單的方法)

 UIImage * icon = [UIImage imageNamed:@"goods_1"];
 CGSize itemSize = CGSizeMake(36, 36);//固定圖片大小為36*36
 UIGraphicsBeginImageContextWithOptions(itemSize, NO, 0.0);//*1
 CGRect imageRect = CGRectMake(0, 0, itemSize.width, itemSize.height);
 [icon drawInRect:imageRect];
 cell.imageView.image = UIGraphicsGetImageFromCurrentImageContext();//*2
 UIGraphicsEndImageContext();//*3

完成之后圖示如下圖1-2(是不是瞬間漂亮好多?而且不會(huì)嚴(yán)重變形哦O(∩_∩)O哈哈~):

iOS如何固定UITableView中cell.imageView.image的圖片大小
圖1-2

這里解釋一下

*1

UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale)這個(gè)函數(shù)用于獲取處理圖片的圖形上下文(context),利用該上下文,你就可以在其上進(jìn)行繪圖,并生成圖片。

  • size是創(chuàng)建上下文的大小,同時(shí)也是上下文處理圖形后返回的大小
  • opaque透明開關(guān),如果圖形完全不用透明,設(shè)置為YES以優(yōu)化位圖的存儲。
  • scale縮放因子

*2

調(diào)用UIGraphicsGetImageFromCurrentImageContext()函數(shù)可從當(dāng)前上下文中獲取一個(gè)UIImage對象,這樣就講改變了圖片取出來了

*3

在完成對圖片的操作之后要關(guān)閉該上下文,所以需要調(diào)用UIGraphicsEndImageContext()函數(shù)

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI