UIImage高仿UIImageView 的contents的模式

在給view 添加背景圖片的時(shí)候,發(fā)現(xiàn)view 沒(méi)有 contents模式,這樣在給view添加背景圖時(shí)就變?cè)斐衫熳冃? 后來(lái)自己增加個(gè)類(lèi)目, 方便調(diào)用

UIImage *image = [UIImage imageNamed:@"234.png"];

UIImage *imag2 = [image getSubImage:self.view.bounds withContentMode:UIViewContentModeScaleToFill];

self.view.layer.contents = (__bridge id _Nullable)(imag2.CGImage);



/**

//截取部分圖片的模式

@param rect? ? ? ? 需要填充視圖的尺寸

@param contentMode 填充模式 支持三種 UIViewContentModeScaleToFill,UIViewContentModeScaleAspectFit,UIViewContentModeScaleAspectFill

@return 生成的新圖片上

*/

-(UIImage*)getSubImage:(CGRect)rect withContentMode:(UIViewContentMode)contentMode;

{

CGRect? rectResult = CGRectMake(0, 0, 0, 0);

CGFloat imageHeigth =? self.size.height*self.scale;

CGFloat imageWeight =? self.size.width*self.scale;

CGFloat rectHeigth = rect.size.height;

CGFloat rectWeight = rect.size.width;

if (UIViewContentModeScaleAspectFit == contentMode) {

return? [self scaleToSize:CGSizeMake(rectWeight, rectHeigth)];

}

else if(UIViewContentModeScaleToFill == contentMode){

return [self scaleToFullSize:CGSizeMake(rectWeight, rectHeigth)];

}

else if (contentMode == UIViewContentModeScaleAspectFill) {

float verticalRadio = rectHeigth/imageHeigth;

float horizontalRadio = rectWeight/imageWeight;

float radio = 1;

if(verticalRadio>1 && horizontalRadio>1)

{

radio = verticalRadio > horizontalRadio ? horizontalRadio : verticalRadio;

}

else

{

radio = verticalRadio < horizontalRadio ? verticalRadio : horizontalRadio;

}

if (radio == horizontalRadio) {

rectResult = CGRectMake((imageWeight-imageHeigth*rectWeight/rectHeigth)/2,0 , imageHeigth*rectWeight/rectHeigth, imageHeigth);

}

else if(radio == verticalRadio) {

rectResult = CGRectMake(0, (imageHeigth-imageWeight*rectHeigth/rectWeight)/2, imageWeight, imageWeight*rectHeigth/rectWeight);

}

else{

rectResult = CGRectMake(0, 0, imageWeight, imageHeigth);

}

}

CGImageRef subImageRef = CGImageCreateWithImageInRect(self.CGImage, rectResult);

CGRect smallBounds = CGRectMake(0, 0, CGImageGetWidth(subImageRef), CGImageGetHeight(subImageRef));

UIGraphicsBeginImageContext(smallBounds.size);

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextDrawImage(context, smallBounds, subImageRef);

UIImage* smallImage = [UIImage imageWithCGImage:subImageRef];

UIGraphicsEndImageContext();

return smallImage;

}

//等比例縮放

-(UIImage*)scaleToSize:(CGSize)size

{

CGFloat width = CGImageGetWidth(self.CGImage);

CGFloat height = CGImageGetHeight(self.CGImage);

float verticalRadio = size.height*1.0/height;

float horizontalRadio = size.width*1.0/width;

float radio = 1;

if(verticalRadio>1 && horizontalRadio>1)

{

radio = verticalRadio > horizontalRadio ? horizontalRadio : verticalRadio;

}

else

{

radio = verticalRadio < horizontalRadio ? verticalRadio : horizontalRadio;

}

width = width*radio;

height = height*radio;

int xPos = (size.width - width)/2;

int yPos = (size.height-height)/2;

// 創(chuàng)建一個(gè)bitmap的context

// 并把它設(shè)置成為當(dāng)前正在使用的context

UIGraphicsBeginImageContext(CGSizeMake(size.width*3.0, size.height*3.0));

// 繪制改變大小的圖片

[self drawInRect:CGRectMake(xPos*3.0, yPos*3.0, width*3.0, height*3.0)];

// 從當(dāng)前context中創(chuàng)建一個(gè)改變大小后的圖片

UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();

// 使當(dāng)前的context出堆棧

UIGraphicsEndImageContext();

// 返回新的改變大小后的圖片

return scaledImage;

}

//按大小縮放

-(UIImage*)scaleToFullSize:(CGSize)size

{

// 創(chuàng)建一個(gè)bitmap的context

// 并把它設(shè)置成為當(dāng)前正在使用的context

UIGraphicsBeginImageContext(CGSizeMake(size.width*3.0, size.height*3.0));

// 繪制改變大小的圖片

[self drawInRect:CGRectMake(0, 0, size.width*3.0, size.height*3.0)];

// 從當(dāng)前context中創(chuàng)建一個(gè)改變大小后的圖片

UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();

// 使當(dāng)前的context出堆棧

UIGraphicsEndImageContext();

// 返回新的改變大小后的圖片

return scaledImage;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市烟号,隨后出現(xiàn)的幾起案子吹缔,更是在濱河造成了極大的恐慌诫龙,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,496評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異歧焦,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)肚医,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,187評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)绢馍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)向瓷,“玉大人,你說(shuō)我怎么就攤上這事舰涌〔危” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,091評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵瓷耙,是天一觀的道長(zhǎng)朱躺。 經(jīng)常有香客問(wèn)我,道長(zhǎng)搁痛,這世上最難降的妖魔是什么室琢? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,458評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮落追,結(jié)果婚禮上盈滴,老公的妹妹穿的比我還像新娘。我一直安慰自己轿钠,他們只是感情好巢钓,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,542評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著疗垛,像睡著了一般症汹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上贷腕,一...
    開(kāi)封第一講書(shū)人閱讀 49,802評(píng)論 1 290
  • 那天背镇,我揣著相機(jī)與錄音,去河邊找鬼泽裳。 笑死瞒斩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的涮总。 我是一名探鬼主播胸囱,決...
    沈念sama閱讀 38,945評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼瀑梗!你這毒婦竟也來(lái)了烹笔?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,709評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤抛丽,失蹤者是張志新(化名)和其女友劉穎谤职,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體亿鲜,經(jīng)...
    沈念sama閱讀 44,158評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡允蜈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,502評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片陷寝。...
    茶點(diǎn)故事閱讀 38,637評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡锅很,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出凤跑,到底是詐尸還是另有隱情爆安,我是刑警寧澤,帶...
    沈念sama閱讀 34,300評(píng)論 4 329
  • 正文 年R本政府宣布仔引,位于F島的核電站扔仓,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏咖耘。R本人自食惡果不足惜翘簇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,911評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望儿倒。 院中可真熱鬧版保,春花似錦、人聲如沸夫否。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,744評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)凰慈。三九已至汞幢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間微谓,已是汗流浹背森篷。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,982評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留豺型,地道東北人仲智。 一個(gè)月前我還...
    沈念sama閱讀 46,344評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像触创,于是被迫代替她去往敵國(guó)和親坎藐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,500評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容