亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

iOS開發(fā)中UIImageView控件的常用操作整理

 更新時(shí)間:2016年01月14日 09:08:03   作者:魔力依然  
這篇文章主要介紹了iOS開發(fā)中UIImageView控件的常用操作整理,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下

UIImageView,顧名思義,是用來放置圖片的。使用Interface Builder設(shè)計(jì)界面時(shí),當(dāng)然可以直接將控件拖進(jìn)去并設(shè)置相關(guān)屬性,這就不說了,這里講的是用代碼。

1、創(chuàng)建一個(gè)UIImageView:

創(chuàng)建一個(gè)UIImageView對象有五種方法:

復(fù)制代碼 代碼如下:

UIImageView *imageView1 = [[UIImageView alloc] init]; UIImageView *imageView2 = [[UIImageView alloc] initWithFrame:(CGRect)]; UIImageView *imageView3 = [[UIImageView alloc] initWithImage:(UIImage *)]; UIImageView *imageView4 = [[UIImageView alloc] initWithImage:(UIImage *) highlightedImage:(UIImage *)]; UIImageView *imageView5 = [[UIImageView alloc] initWithCoder:(NSCoder *)];

比較常用的是前邊三個(gè)。至于第四個(gè),當(dāng)這個(gè)ImageView的highlighted屬性是YES時(shí),顯示的就是參數(shù)highlightedImage,一般情況下顯示的是第一個(gè)參數(shù)UIImage。

2、frame與bounds屬性:

上述創(chuàng)建一個(gè)UIImageView的方法中,第二個(gè)方法是在創(chuàng)建時(shí)就設(shè)定位置和大小。
當(dāng)之后想改變位置時(shí),可以重新設(shè)定frame屬性:

復(fù)制代碼 代碼如下:

imageView.frame = CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat heigth);

注意到UIImageView還有一個(gè)bounds屬性
復(fù)制代碼 代碼如下:

imageView.bounds = CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat heigth);

那么這個(gè)屬性跟frame有什么區(qū)別呢?

我的理解是,frame設(shè)置其位置和大小,而bounds只能設(shè)置其大小,其參數(shù)中的x、y不起作用即便是之前沒有設(shè)定frame屬性,控件最終的位置也不是bounds所設(shè)定的參數(shù)。bounds實(shí)現(xiàn)的是將UIImageView控件以原來的中心為中心進(jìn)行縮放。例如有如下代碼:

復(fù)制代碼 代碼如下:

imageView.frame = CGRectMake(0, 0, 320, 460); imageView.bounds = CGRectMake(100, 100, 160, 230);

執(zhí)行之后,這個(gè)imageView的位置和大小是(80, 115, 160, 230)。

3、contentMode屬性:

這個(gè)屬性是用來設(shè)置圖片的顯示方式,如居中、居右,是否縮放等,有以下幾個(gè)常量可供設(shè)定:

復(fù)制代碼 代碼如下:

UIViewContentModeScaleToFill UIViewContentModeScaleAspectFit UIViewContentModeScaleAspectFill UIViewContentModeRedraw UIViewContentModeCenter UIViewContentModeTop UIViewContentModeBottom UIViewContentModeLeft UIViewContentModeRight UIViewContentModeTopLeft UIViewContentModeTopRight UIViewContentModeBottomLeft UIViewContentModeBottomRight

注意以上幾個(gè)常量,凡是沒有帶Scale的,當(dāng)圖片尺寸超過 ImageView尺寸時(shí),只有部分顯示在ImageView中。UIViewContentModeScaleToFill屬性會(huì)導(dǎo)致圖片變形。UIViewContentModeScaleAspectFit會(huì)保證圖片比例不變,而且全部顯示在ImageView中,這意味著ImageView會(huì)有部分空白。UIViewContentModeScaleAspectFill也會(huì)證圖片比例不變,但是是填充整個(gè)ImageView的,可能只有部分圖片顯示出來。

前三個(gè)效果如下圖:

2016113195842823.png (233×438)2016113195911225.png (233×438)2016113195927624.png (233×438)

UIViewContentModeScaleToFill、UIViewContentModeScaleAspectFit、UIViewContentModeScaleAspectFill

4、更改位置

更改一個(gè)UIImageView的位置,可以

4.1 直接修改其frame屬性

4.2 修改其center屬性:

復(fù)制代碼 代碼如下:

imageView.center = CGPointMake(CGFloat x, CGFloat y);

center屬性指的就是這個(gè)ImageView的中間點(diǎn)。

4.3 使用transform屬性

復(fù)制代碼 代碼如下:

imageView.transform = CGAffineTransformMakeTranslation(CGFloat dx, CGFloat dy);

其中dx與dy表示想要往x或者y方向移動(dòng)多少,而不是移動(dòng)到多少。

5、旋轉(zhuǎn)圖像

復(fù)制代碼 代碼如下:

imageView.transform = CGAffineTransformMakeRotation(CGFloat angle);

要注意它是按照順時(shí)針方向旋轉(zhuǎn)的,而且旋轉(zhuǎn)中心是原始ImageView的中心,也就是center屬性表示的位置。

這個(gè)方法的參數(shù)angle的單位是弧度,而不是我們最常用的度數(shù),所以可以寫一個(gè)宏定義:

復(fù)制代碼 代碼如下:

#define degreesToRadians(x) (M_PI*(x)/180.0)
 

用于將度數(shù)轉(zhuǎn)化成弧度。下圖是旋轉(zhuǎn)45度的情況:

2016113200035442.png (233×438)2016113200057774.png (233×438)

6、縮放圖像

還是使用transform屬性:

復(fù)制代碼 代碼如下:

imageView.transform = CGAffineTransformMakeScale(CGFloat scale_w, CGFloat scale_h);

其中,CGFloat scale_w與CGFloat scale_h分別表示將原來的寬度和高度縮放到多少倍,下圖是縮放到原來的0.6倍的示意圖:

2016113200125793.png (233×438)2016113200142359.png (233×438)

7、播放一系列圖片

復(fù)制代碼 代碼如下:

imageView.animationImages = imagesArray; // 設(shè)定所有的圖片在多少秒內(nèi)播放完畢 imageView.animationDuration = [imagesArray count]; // 不重復(fù)播放多少遍,0表示無數(shù)遍 imageView.animationRepeatCount = 0; // 開始播放 [imageView startAnimating];

其中,imagesArray是一些列圖片的數(shù)組。如下圖:

2016113200207725.png (233×438)2016113200242612.png (233×438)2016113200301738.png (233×438)

8、為圖片添加單擊事件:

復(fù)制代碼 代碼如下:

imageView.userInteractionEnabled = YES; UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImageView:)]; [imageView addGestureRecognizer:singleTap];

一定要先將userInteractionEnabled置為YES,這樣才能響應(yīng)單擊事件。

9、tag參數(shù)

一個(gè)視圖通常都只有一個(gè)父視圖,多個(gè)子視圖,在開發(fā)中可以通過使用子視圖的tag來取出對應(yīng)的子視圖。方法為Viewwithtag:

提示點(diǎn):在xib中如果想要通過tag參數(shù)獲取對應(yīng)的控件(屬性),不要把tag的參數(shù)設(shè)置為0,因?yàn)閤ib中所有的對象默認(rèn)tag都為0,設(shè)置為0取不到對象。

2016113200407294.png (643×431)

10、ImageView中添加按鈕
(1)ImageView和Button的比較

Button按鈕的內(nèi)部可以放置多張圖片(4),而ImageView中只能放置一張圖片。

(2)說明:

ImageView只能顯示一張圖片,我們知道所有的ui控件都繼承自UIView,所有的視圖都是容器,容易意味著還能往里邊加?xùn)|西。那么能否在ImageView中加上按鈕呢?

(3)在ImageView中添加按鈕的操作

通常有兩種方式創(chuàng)建控件,一是直接在storyboard或xib界面設(shè)計(jì)器上拖拽,另一種方式是使用手寫代碼的方式創(chuàng)建。
在界面設(shè)計(jì)器上面拖拽的無法在ImageView中添加按鈕,那么我們嘗試一下手寫代碼。

代碼如下:

復(fù)制代碼 代碼如下:

#import "YYViewController.h"

@interface YYViewController ()
@end


復(fù)制代碼 代碼如下:

@implementation YYViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
   
    // UIImageView默認(rèn)不允許用戶交互
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 20, 100, 100)];
    [self.view addSubview:imageView];
    imageView.backgroundColor = [UIColor redColor];
    imageView.userInteractionEnabled = YES;
   
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeContactAdd];
    [imageView addSubview:btn];
   
    [btn addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside];
}

- (void)click
{
    NSLog(@"摸我了");
}
@end


(4)執(zhí)行效果(添加+按鈕后,點(diǎn)擊):

2016113200430816.png (411×183)

(5)注意點(diǎn):

在上面代碼中imageView.userInteractionEnabled = YES;的作用是,設(shè)置imageView為允許用戶交互的。

imageView默認(rèn)的是不允許用戶交互的,這個(gè)可以通過在界面設(shè)計(jì)器中查看imageView的屬性邊欄查看。

請注意默認(rèn)狀態(tài)的屬性

2016113200446126.png (610×354)

11、其他設(shè)置

復(fù)制代碼 代碼如下:

imageView.hidden = YES或者NO;    // 隱藏或者顯示圖片 imageView.alpha = (CGFloat) al;    // 設(shè)置透明度 imageView.highlightedImage = (UIImage *)hightlightedImage; // 設(shè)置高亮?xí)r顯示的圖片 imageView.image = (UIImage *)image; // 設(shè)置正常顯示的圖片 [imageView sizeToFit];    // 將圖片尺寸調(diào)整為與內(nèi)容圖片相同

相關(guān)文章

  • IOS中UIImageView方法實(shí)現(xiàn)簡單動(dòng)畫

    IOS中UIImageView方法實(shí)現(xiàn)簡單動(dòng)畫

    這篇文章主要介紹了IOS中UIImageView方法實(shí)現(xiàn)簡單動(dòng)畫的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • iOS圖片拉伸的方法

    iOS圖片拉伸的方法

    這篇文章主要為大家詳細(xì)介紹了iOS圖片拉伸的相關(guān)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • IOS中無限滾動(dòng)Scrollview效果

    IOS中無限滾動(dòng)Scrollview效果

    這篇文章主要為大家詳細(xì)介紹了IOS中無限滾動(dòng)Scrollview效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-02-02
  • iOS NSDate中關(guān)于夏令時(shí)的坑

    iOS NSDate中關(guān)于夏令時(shí)的坑

    這篇文章主要給大家介紹了關(guān)于iOS NSDate中夏令時(shí)的坑,以及iOS 時(shí)間字符串&NSDate&時(shí)間戳 相互轉(zhuǎn)換的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),需要的朋友可以參考借鑒,下面隨小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • iOS實(shí)現(xiàn)動(dòng)態(tài)的開屏廣告示例代碼

    iOS實(shí)現(xiàn)動(dòng)態(tài)的開屏廣告示例代碼

    啟動(dòng)圖是在iOS開發(fā)過程中必不可少的一個(gè)部分,很多app在啟動(dòng)圖之后會(huì)有一張自定義的開屏廣告圖,但是有的時(shí)候需要讓啟動(dòng)圖看起來就是一個(gè)廣告,而且還要這個(gè)廣告里面會(huì)動(dòng),iOS的啟動(dòng)圖只能是靜態(tài)的,而且固定,為了實(shí)現(xiàn)看起來的動(dòng)畫效果,只能進(jìn)行偽造了。下面來一起看看
    2016-09-09
  • 淺析Objective-C中分類Category的使用

    淺析Objective-C中分類Category的使用

    這篇文章主要介紹了淺析Objective-C中分類Category的使用,使用Category對類進(jìn)行擴(kuò)展可以訪問原始類的實(shí)例變量,需要的朋友可以參考下
    2016-03-03
  • iOS中常用設(shè)置返回按鈕

    iOS中常用設(shè)置返回按鈕

    本文給大家分享一段代碼關(guān)于iOS中常用設(shè)置返回按鈕的實(shí)現(xiàn)方法,代碼簡單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下
    2016-12-12
  • tableView上面空出20個(gè)像素的解決辦法

    tableView上面空出20個(gè)像素的解決辦法

    在IOS開發(fā)中,有時(shí)候會(huì)遇到tableView上面多出來20個(gè)像素,是什么原因呢?又該如何來解決他呢,今天我們來探討下
    2014-09-09
  • iOS開發(fā)技巧之WeakSelf宏的進(jìn)化詳解

    iOS開發(fā)技巧之WeakSelf宏的進(jìn)化詳解

    在程序中我們經(jīng)常用到Block,但寫weak self 時(shí)會(huì)比較繁瑣,下面這篇文章主要給大家介紹了關(guān)于iOS開發(fā)技巧之WeakSelf宏的進(jìn)化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們一起來看看吧
    2018-05-05
  • iOS開發(fā)一個(gè)好看的ActionSheet

    iOS開發(fā)一個(gè)好看的ActionSheet

    本篇文章通過代碼分享和圖文形式教給大家用IOS寫一個(gè)好看的ActionSheet過程以及注意事項(xiàng),需要的朋友參考下吧。
    2018-01-01

最新評論