iphone開發 UIImageView常用操作

2021-09-30 13:23:16 字數 4282 閱讀 2175

uiimageview

,顧名思義,是用來放置的。使用inte***ce builder

設計介面時,當然可以直接將控制項拖進去並設定相關屬性,這就不說了,這裡講的是用**。

1 、建立乙個uiimageview

:建立乙個uiimageview

物件有五種方法:

uiimageview *imageview1 = [[uiimageviewalloc] init];

uiimageview *imageview2 = [[uiimageviewalloc]initwithframe:(cgrect)];

uiimageview *imageview3 = [[uiimageviewalloc]initwithimage:(uiimage *)];

uiimageview *imageview4 = [[uiimageviewalloc]initwithimage:(uiimage *) highlightedimage:(uiimage *)];

uiimageview *imageview5 = [[uiimageviewalloc]initwithcoder:(nscoder *)];

比較常用的是前邊三個。至於第四個,當這個imageview

的highlighted

屬性是yes

時,顯示的就是引數highlightedimage

,一般情況下顯示的是第乙個引數uiimage 。2

、frame

與bounds

屬性:上述建立乙個uiimageview

的方法中,第二個方法是在建立時就設定位置和大小。

當之後想改變位置時,可以重新設定frame

屬性:imageview.frame = cgrectmake(cgfloat x,cgfloat y, cgfloat width,cgfloat heigth);

注意到uiimageview

還有乙個bounds

屬性imageview.bounds = cgrectmake(cgfloat x, cgfloaty, cgfloat width,cgfloat heigth);

那麼這個屬性跟frame

有什麼區別呢?

我的理解是,frame

設定其位置和大小,而bounds

只能設定其大小,其引數中的x

、y 不起作用即便是之前沒有設定frame

屬性,控制項最終的位置也不是bounds

所設定的引數。bounds

實現的是將uiimageview

控制項以原來的中心為中心進行縮放。例如有如下**:

imageview.frame = cgrectmake(0, 0, 320,460);

imageview.bounds = cgrectmake(100, 100,160, 230);

執行之後,這個imageview

的位置和大小是(80

, 115

, 160

, 230

)。3、contentmode

屬性:uiviewcontentmodescaleto

fill

uiviewcontentmodescaleas

pectfit

uiviewcontentmodescaleas

pectfill

uiviewcontentmoderedraw

uiviewcontentmodecenter

uiviewcontentmodetop

uiviewcontentmodebottom

uiviewcontentmodeleft

uiviewcontentmoderight

uiviewcontentmodetopleft

uiviewcontentmodetoprigh t

uiviewcontentmodebottoml

eftuiviewcontentmodebottomr

ight

注意以上幾個常量,凡是沒有帶scale

的,當尺寸超過 imageview

尺寸時,只有部分顯示在imageview

中。uiviewcontentmodescaleto

fill

屬性會導致變形。uiviewcontentmodescaleas

pectfit

會保證比例不變,而且全部顯示在imageview

中,這意味著imageview

會有部分空白。uiviewcontentmodescaleas

pectfill

也會證比例不變,但是是填充整個imageview

的,可能只有部分顯示出來。

前三個效果如下圖:

uiviewcontentmodescaleto

fill 

uiviewcontentmodescaleas

pectfituiviewcontentmodescaleas

pectfill 4

、更改位置

更改乙個uiimageview

的位置,可以

4.1

直接修改其frame

屬性4.2

修改其center

屬性:imageview.center = cgpointmake(cgfloat x,cgfloat y);

center

屬性指的就是這個imageview

的中間點。

4.3

使用transform

屬性imageview.transform =cgaffinetransformmaketra

nslation(cgfloat dx,cgfloat dy);

其中dx

與dy表示想要往x

或者y方向移動多少,而不是移動到多少。

5 、旋轉影象

imageview.transform =cgaffinetransformmakerot

ation(cgfloatangle);

要注意它是按照順時針方向旋轉的,而且旋轉中心是原始imageview

的中心,也就是center

屬性表示的位置。

這個方法的引數angle

的單位是弧度,而不是我們最常用的度數,所以可以寫乙個巨集定義:

#define degreestoradians(x)(m_pi*(x)/180.0)

用於將度數轉化成弧度。下圖是旋轉45

度的情況:

6 、縮放影象

還是使用transform

屬性:imageview.transform =cgaffinetransformmakesca

le(cgfloat scale_w,cgfloat scale_h);

其中,cgfloatscale_w

與cgfloatscale_h

分別表示將原來的寬度和高度縮放到多少倍,下圖是縮放到原來的0.6

倍的示意圖:

7imageview.animationimages = imagesarray;

// imageview.animationduration = [imagesarraycount];

// 表示無數遍

imageview.animationrepeatcount = 0;

// [imageview startanimating];

其中,imagesarray

8imageview.userinteractionenabled = yes;

uitapgesturerecognizer *singletap =[[uitapgesturerecognizer alloc]initwithtarget:selfaction:@selector(tapimageview:)];

[imageview addgesturerecognizer:singletap];

一定要先將userinteractionenabled

置為yes

,這樣才能響應單擊事件。

9 、其他設定

imageview.hidden = yes

或者no; 

//隱藏或者顯示

imageview.alpha = (cgfloat)al; 

// 設定透明度

imageview.highlightedimage =(uiimage*)hightlightedimage;  //

設定高亮時顯示的

imageview.image = (uiimage *)image;  //

設定正常顯示的

[imageviewsizetofit]; 

//將尺寸調整為與內容相同

iPhone開發之UIImage應用與記憶體管理

用uiimage載入影象的方法很多,最常用的是下面兩種 1 用imagenamed函式 uiimage imagenamed imagename 2 用nsdata的方式載入,例如 1.nsstring filepath nsbundle mainbundle pathforresource fil...

iOS開發之UIImage等比縮放

前面講了擷取uiimage指定大小區域,很方便的擷取uiimage。今天要和大家分享的是uiimage的縮放。兩種縮放 縮放到指定大小,也就是指定的size.等比縮放。uiimage imagecompresswith uiimage image scaledtosize cgsize size u...

iOS開發之UIImage等比縮放

謝謝大家的支援和關愛。假設有做的不到的地方,還請海涵。畢竟我乙個人的力量是有限的。我會盡自己最大的努力大家準備一些乾貨。有些內容可能都是比較基礎的,記住 不積跬步無以至千里,不積小流無以成江海。worldligang 163.com前面講了擷取uiimage指定大小區域,非常方便的擷取uiimage...