更改UIView的背景


本文分析對比了各種更改UIView背景的方法。當然,背景是根據一個圖片來的(非純色)。

一.加一個uiimageview在uiview上面

    UIImageView* imageView = [[UIImageView alloc] initWithFrame:view.bounds];
    imageView.image = [[UIImage imageNamed:@"name.png"] stretchableImageWithLeftCapWidth:left topCapHeight:top];
    [view addSubview:imageView];

這種方式,如果原始圖片大小不夠(小於view的大小),可以拉伸,在view釋放后也沒有什么內存保留。

二.通過圖片來生成UIColor設置view的backgroundColor

1.imageNamed方式

view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"name.png"]];

2.contentOfFile方式

NSString* path = [[NSBundle mainBundle] pathForResource:@"name" ofType:@"png"];
    view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithContentsOfFile:path];

這兩種方式都會在生成color時占用大量的內存(原始圖片的n倍,這個n可能會達到幾千的程度)。而且如果圖片大小不夠,就會按照原始大小一個一個u畫過去,也就是不會自動拉伸。1和2的區別在於,view釋放后,1中的color並不會跟着釋放,而是一直存在於內存中(當然,再次根據這個圖片生成color時並不會再次申請內存了),而2中的color就會隨着view的釋放而釋放。

三.quartzCore方式

UIImage *image = [UIImage imageNamed:@"name.png"];
    view.layer.contents = (id) image.CGImage;
    // 如果需要背景透明加上下面這句
    view.layer.backgroundColor = [UIColor clearColor].CGColor;

這種方式會自動拉伸圖片,而且沒有額外內存占用。

綜上,推薦第三種方式來根據圖片設置背景色。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM