IOS學習筆記18 UIImageView

2021-08-27 04:21:09 字數 2496 閱讀 3229

以前我們使用過uiimage來載入,而uiimageview是在介面上顯示的乙個控制項,在uiimageview中顯示的話應該首先把載入到uiimage中,然後通過其他方式使用該uiimage。以下說明了四種常用的載入uiimage的方法:

imagenamed:使用應用程式束中的乙個檔案來建立,ios4以後的版本中可以省略副檔名;

imagewithcgimage:使用quartz 2d物件建立uiimage,與initwithcgimage等效;

imagewithcontentsoffile:根據指定的路徑建立uiimage,與initwithcontentoffile等效;

imagewithdata:使用nsdata建立,與initwithdata等效;

另外,為支援iphone4之後的retina顯示屏,系統根據檔名字尾來載入最匹配的影象,例如有兩個包含相同圖示的檔案,乙個是標準的,乙個是用於retina螢幕顯示的,標準命名為icon.png,而hd版本命名為[email protected],載入期間,uiimage會自動去匹配需要載入的影象,如果沒有hd版本的影象,uiimage會載入標準的影象檔案並將其放大到合適高解析度的顯示屏。

建立uiimageview有兩種方法,一種是通過之前提到的用uiimage來載入:

uiimage *image = [uiimage

imagenamed:@"picture"];

uiimageview *imageview = [[uiimageview

alloc] initwithimage:image];

另一種是通過initwithframe:來載入,然後手工修改uiimageview的屬性。

animationduration:屬性,指定動畫持續的時間;

animationimages:屬性,是乙個nsarray,包含要載入到uiimageview中的影象;

image:屬性,指定乙個要載入的影象;

下面來構建乙個幻燈片的應用:

首先看看完成後整體工程目錄截圖:

下面來看看使用core graphics來繪製簡單影象,通過uiimage不能訪問整個core graphics庫,但也提供了5個方法來像core graphics那樣工作:

drawaspatterninrect:在矩形內繪製影象,影象不縮放,必要時將平鋪

drawatpoint:在左上角位於cgpoint指定位置開始繪製影象

drawinrect:在cgrect內繪製影象,並相應的縮放

drawinrect:blendmode:alpha:drawinrect的複雜版本

有乙個問題是,不能在viewdidload:或其他通常來載入物件的方法中使用這些方法,因為他們依賴於圖形上下文,圖形上下文是繪畫的目的地,好比視窗等。在iphone和ipad中,uiview自動在calayer中建立乙個圖形上下文,calayer是與每個uiview相關聯的core animation層,要訪問的話可以建立uiview的子類並重寫drawrect:方法。

建立customuiimageview並繼承uiview,然後重寫drawrect方法,**如下:

#import "customuiimageview.h"

@implementation customuiimageview

- (id)initwithframe:(cgrect)frame

returnself;

}// only override drawrect: if you perform custom drawing.

// an empty implementation adversely affects performance during animation.

- (void)drawrect:(cgrect)rect

@end

使用的話在viewcontroller.m檔案中新增如下**即可:

customuiimageview *customimageview = [[customuiimageview alloc] initwithframe:[[uiscreen mainscreen] bounds]];

[self.view addsubview:customimageview];

編譯執行結果如下:

使用該方法可以構建更複雜的功能,如混合,類似ps中的功能,如顏色加深和強光以及讓部分透明,這些方法都可以實現。相比於之前建立多個uiimageview物件,使用單個drawrect:方法更方便和容易。

IOS學習筆記18 UIImageView

mageview中顯示的話應該首先把載入到uiimage中,然後通過其他方式使用該uiimage。以下說明了四種常用的載入uiimage的方法 imagenamed 使用應用程式束中的乙個檔案來建立,ios4以後的版本中可以省略副檔名 imagewithcgimage 使用quartz 2d物件建立...

python學習筆記18

棧 stack 可以用順序表實現,也可以用鍊錶實現,其原理為後進先出,操作包括 stack 建立乙個新的空棧 push item 新增乙個新的元素item到棧頂 pop 彈出棧頂元素 peek 返回棧頂元素 is empty 判斷棧是否為空 size 返回棧的元素個數。佇列 queue 也是可以用順...

c 學習筆記(18)

類模板做友元 全域性函式類內實現 直接在類內宣告友元 全域性函式類外實現 需要提前讓編譯器知道全域性函式的存在 template classt1,class t2 class person 全域性函式的類內實現 friend void printperson personp 加入空模板的引數列表,表...