中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

瘋狂ios講義瘋狂連載之圖像控件(UIImageView)

發布時間:2020-06-11 23:49:47 來源:網絡 閱讀:2922 作者:fkJava李剛 欄目:移動開發

   UIImageView代表一個圖片顯示控件,它直接繼承了UIView基類,沒有繼承UIControl,因此,UIImage只能作為圖片的顯示控件,不能接受用戶輸入,也不能與用戶交互,它只是一個靜態控件。

   當程序需要使用UIImageView來顯示圖片時,即可直接在Interface Builder中把UIImageView拖入程序界面中,也可在程序中創建UIImageView對象。

   創建UIImageView對象之后,接下來可以通過如下兩個屬性訪問或設置該控件顯示的圖片。

p_w_picpath:訪問或設置該控件顯示的圖片。

highlightedImage:訪問或設置該控件處于高亮狀態時顯示的圖片。

   除此之外,UIImageView還可以使用動畫顯示一組圖片,使用UIImageView動畫顯示一組圖片的屬性和方法如下。

animationImages:訪問或者設置該UIImageView需要動畫顯示的多張圖片。該屬性的值是一個NSArray對象。

highlightedAnimationImages:訪問或者設置該UIImageView高亮狀態下需要動畫顯示的多張圖片。該屬性的值是一個NSArray對象。

animationDuration:訪問或設置該UIImageView的動畫持續時間。

animationRepeatCount:訪問或設置該UIImageView的動畫重復次數。

startAnimating:開始播放動畫。

stopAnimating:停止播放動畫。

isAnimating:該方法判斷該UIImageView是否正在播放動畫。


瘋狂ios講義瘋狂連載之圖像控件(UIImageView)

   如果在Interface Builder的用戶界面設計文件中選中一個UIImageView,可以看到Xcode顯示如圖10.24所示的屬性檢查器面板。

   在圖10.24所示的屬性檢查面板中,UIImageView所支持的三個屬性的意義非常明確,此處不再贅述。實際上,UIView控件所支持的Mode屬性可控制UIImageView所顯示圖片的縮放模式,Mode屬性是一個列表框,該列表框支持如下列表項。


Scale To Fill:不保持縱橫比縮放圖片,使圖片完全適應該UIImageView控件。

Aspect Fit:保持縱橫比縮放圖片,使圖片的長邊能完全顯示出來。也就是說,可以完整地將圖片顯示出來。

Aspect Fill:保持縱橫比縮放圖片,只保證圖片的短邊能完全顯示出來。也就是說,圖片通常只在水平或垂直方向是完整的,另一個方向將會發生截取。

Center:不縮放圖片,只顯示圖片的中間區域。

Top:不縮放圖片,只顯示圖片的頂部區域。

Bottom:不縮放圖片,只顯示圖片的底部區域。

Left:不縮放圖片,只顯示圖片的左邊區域。

Right:不縮放圖片,只顯示圖片的右邊區域。

Top Left:不縮放圖片,只顯示圖片的左上邊區域。

Top Right:不縮放圖片,只顯示圖片的右上邊區域。

Bottom Left:不縮放圖片,只顯示圖片的左下邊區域。

Bottom Right:不縮放圖片,只顯示圖片的右下邊區域。


實例1:圖片瀏覽器


瘋狂ios講義瘋狂連載之圖像控件(UIImageView)


   利用本實例的圖片瀏覽器可以依次查看應用中的每張圖片,除此之外,還可以改變正在查看的圖片的透明度,這可借助UIViewalpha屬性來實現。不僅如此,本圖片瀏覽器還可通過一個小區域來查看圖片的原始大小,因此,本例會定義兩個UIImageView:一個用于查看圖片整體,一個用于查看圖片局部的細節。

   創建一個Single View Application,并向界面中添加三個按鈕、兩個UIImageView,然后將它們擺放整齊,在Interface Builder中設計出的程序界面如圖10.25所示。

為了能在程序中訪問兩個UIImageView控件,還需要在Interface Builder中將這兩個UIImageView綁定到控制器類的IBOutlet屬性:iv1iv2,這樣控制器類即可通過這兩個屬性來訪問這兩個UIImageView控件。

   為了讓程序能響應應用界面上的三個按鈕的單擊事件,還需要在Interface Builder中為這三個按鈕的Touch Up Inside事件綁定IBAction事件處理方法,這些按鈕分別綁定到IBAction事件處理方法為:plus:minus:next:

   完成界面設計之后,接下來編寫該應用界面對應的控制器類的實現部分,主要就是為plus:minus:next:方法提供實現。

   除此之外,程序還需要為UIImageView的單擊事件提供響應——問題是UIImageView并未繼承UIControl基類,因此,既不能在Interface Builder中為UIImageViewTouch Up Inside事件綁定IBAction事件處理方法,也不能通過代碼為該控件的Touch Up Inside事件綁定事件處理方法。為了讓UIImageView能響應單擊事件,程序可以通過UIImageView添加手勢檢測器來處理單擊事件。

下面是控制器類的實現部分代碼。


程序清單:codes/10/10.7/UIImageViewTest/UIImageViewTest/FKViewController.m

瘋狂ios講義瘋狂連載之圖像控件(UIImageView)

瘋狂ios講義瘋狂連載之圖像控件(UIImageView)

上面程序中,在viewDidLoad方法中初始化了該程序需要顯示的所有圖片——將這些圖片的文件名組成一個NSArray數組。除此之外,該程序還創建一個手勢檢測器,并為iv(第一個UIImageView控件)添加該手勢檢測器,該手勢檢測器就會負責處理該UIImageView控件上的點擊事件。

接下來在plus:minus:中的粗體字代碼通過修改alpha屬性來控制該控件的透明度,而next:方法中粗體字代碼則通過p_w_picpath屬性來控制該UIImageView所顯示的圖片。

該程序中的一個難點是使用CGImage來處理位圖,雖然iOS提供了UIImage來代表位圖,但實際上UIImage對位圖的處理功能非常有限,如果需要對位圖進行處理,則需要借助CGImage。第11章介紹圖形、圖像處理時會進一步介紹CGImage的功能和用法。

編譯、運行該程序,可以看到如圖10.26所示的效果。

瘋狂ios講義瘋狂連載之圖像控件(UIImageView)



實例2:“幻燈片”播放器


   UIImageView除了可以顯示單張圖片之外,還能以動畫方式輪換顯示多張圖片,這種顯示方式非常類似于幻燈片播放方式。

   為了讓UIImageView以動畫方式顯示多張圖片,只要為該UIImageViewanimationImages屬性賦一個NSArray集合(該集合元素中都是UIImage對象),接下來設置與動畫相關的一些屬性,再調用UIImageViewstartAnimating方法開始播放動畫即可。

   下面的實例將會使用UIImageView開發一個幻燈片播放器。

   創建一個Single View Application,使用Interface Builder打開應用界面,并將一個UIImageView拖入該應用界面中。為了能在該應用界面對應的控制器類中訪問該UIImageView控件,可以在Interface Builder中將該UIImageView綁定到該控制器類的IBOutlet屬性:iv

   接下來修改該應用界面對應的控制器類的實現部分,修改后的實現部分代碼如下。


程序清單:codes/10/10.7/UIImageViewTest2/UIImageViewTest2/FKViewController.m

瘋狂ios講義瘋狂連載之圖像控件(UIImageView)


   上面程序中,粗體字代碼就是設置UIImageView動畫播放圖片,并設置該控件的動畫持續時間和動畫重復次數,程序最后調用了UIImageViewstartAnimating方法開始播放動畫,這樣即可讓UIImageView開始正常播放動畫。



————本文節選自《瘋狂ios講義(上)》

瘋狂ios講義瘋狂連載之圖像控件(UIImageView)




向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高阳县| 津南区| 禄劝| 平度市| 新乡市| 湖北省| 如东县| 武清区| 广河县| 绍兴县| 牙克石市| 达日县| 东海县| 威远县| 潞城市| 电白县| 西贡区| 深州市| 保德县| 中牟县| 天全县| 博乐市| 东光县| 侯马市| 邯郸市| 繁峙县| 博客| 长子县| 浪卡子县| 平安县| 泰安市| 岳西县| 石景山区| 邢台市| 内江市| 武强县| 南部县| 庐江县| 三台县| 抚松县| 江永县|