常見(jiàn)的幾種UIView

UIView常見(jiàn)控件

UILabel

  • 什么是UILabel?
    • UILabel極其常用蚁署,功能比較專一:顯示文字
  • UILabel的常見(jiàn)屬性
    • 顯示的文字
      @property(nonatomic,copy)   NSString *text;
      
    • 字體
    @property(nonatomic,retain) UIFont *font;
        ```
    - 文字顏色
    ```obj
    @property(nonatomic,retain) UIColor *textColor;
        ```
    - 對(duì)齊模式(比如左對(duì)齊挂绰、居中對(duì)齊、右對(duì)齊)
    ```obj
    @property(nonatomic)NSTextAlignment textAlignment;
        ```
    - 文字行數(shù)
    ```obj
    @property(nonatomic) NSInteger numberOfLines;
        ```
    - 換行模式
    ```obj
    @property(nonatomic) NSLineBreakMode lineBreakMode;
        ```
    
  • UILabel的各種屬性又包含很多屬性,讀者可自行查找


    屬性描述.png

UIImageView

  • 什么是UIImageView?

    • UIImageView極其常用,功能比較專一:顯示圖片
  • UIImageView的常見(jiàn)屬性

    • 顯示的圖片

    @property(nonatomic,retain) UIImage *image;
    ```

    • 顯示的動(dòng)畫(huà)圖片
    @property(nonatomic,copy) NSArray *animationImages;
        ```
    - 動(dòng)畫(huà)圖片的持續(xù)時(shí)間
    ```obj
    @property(nonatomic) NSTimeInterval animationDuration;
        ```
    - 動(dòng)畫(huà)的播放次數(shù)(默認(rèn)是0,代表無(wú)限播放)
    ```obj
    @property(nonatomic) NSInteger animationRepeatCount;
        ```
    
  • UIImmageView的常見(jiàn)方法

    • (void)startAnimating; // 開(kāi)始動(dòng)畫(huà)
    • (void)stopAnimating; // 停止動(dòng)畫(huà)
    • (BOOL)isAnimating; // 是否正在執(zhí)行動(dòng)畫(huà)
  • UIImmageView的contentMode屬性

  • 帶有scale單詞的:圖片有可能會(huì)拉伸

    • UIViewContentModeScaleToFill
      • 將圖片拉伸至填充整個(gè)imageView
      • 圖片顯示的尺寸跟imageView的尺寸是一樣的
    • 帶有aspect單詞的:保持圖片原來(lái)的寬高比
      • UIViewContentModeScaleAspectFit
        • 保證剛好能看到圖片的全部
      • UIViewContentModeScaleAspectFill
        • 拉伸至圖片的寬度或者高度跟imageView一樣
  • 沒(méi)有scale單詞的:圖片絕對(duì)不會(huì)被拉伸均践,保持圖片的原尺寸

    • UIViewContentModeCenter
    • UIViewContentModeTop
    • UIViewContentModeBottom
    • UIViewContentModeLeft
    • UIViewContentModeRight
    • UIViewContentModeTopLeft
    • UIViewContentModeTopRight
    • UIViewContentModeBottomLeft
    • UIViewContentModeBottomRight
  • initWithImage:方法

    • 利用這個(gè)方法創(chuàng)建出來(lái)的imageView的尺寸和傳入的圖片尺寸一樣

圖片類UIImage

  • 一個(gè)UIImage對(duì)象代表一張圖片,一般通過(guò)imageNamed:方法就可以通過(guò)文件名加載項(xiàng)目中的圖片(該方法存在緩存)或者通過(guò)imageWithContentsOfFile:(該方法沒(méi)有緩存)
    UIImage *image = [UIImage imageNamed:@"lufy"];
    UIImage *actionImage = [UIImage imageWithContentsOfFile:path];
    

UIButton

  • 什么是按鈕?
    • 還有一個(gè)非常重要的UI控件---UIButton摩幔,俗稱“按鈕”
    • 一般情況下彤委,點(diǎn)擊某個(gè)控件后,會(huì)做出相應(yīng)反應(yīng)的都是按鈕
    • 按鈕的功能比較多或衡,既能顯示文字焦影,又能顯示圖片,還能隨時(shí)調(diào)整內(nèi)部圖片和文字的位置
  • UIButton的常見(jiàn)設(shè)置
    • 設(shè)置按鈕的文字
      - (void)setTitle:(NSString *)title forState:(UIControlState)state;
      
    • 設(shè)置按鈕的文字顏色
        - (void)setTitleColor:(UIColor *)color forState:(UIControlState)state;
        ```
    - 設(shè)置按鈕內(nèi)部的小圖片
    ```obj
        - (void)setImage:(UIImage *)image forState:(UIControlState)state;
        ```
    - 設(shè)置按鈕的背景圖片
    ```obj
        - (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state;
        ```
    - 設(shè)置按鈕的文字字體(需要拿到按鈕內(nèi)部的label來(lái)設(shè)置)
    ```obj
        btn.titleLabel.font = [UIFont systemFontOfSize:13];
        ```
    

Storyboard到代碼的轉(zhuǎn)換

點(diǎn)我啊.png
// 創(chuàng)建一個(gè)自定義的按鈕
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
// 默認(rèn)狀態(tài)的背景
[btn setBackgroundImage:[UIImage imageNamed:@"btn_01"] forState:UIControlStateNormal];
// 默認(rèn)狀態(tài)的文字
[btn setTitle:@"點(diǎn)我啊" forState:UIControlStateNormal];
// 默認(rèn)狀態(tài)的文字顏色
[btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];

課堂小語(yǔ)法點(diǎn)

  • 不能直接修改:OC對(duì)象的結(jié)構(gòu)體屬性的成員
  • 下面的寫(xiě)法是錯(cuò)誤的
imageView.frame.size = imageView.image.size;
  • 正確寫(xiě)法
CGRect tempFrame = imageView.frame;
tempFrame.size = imageView.image.size;
imageView.frame = tempFrame;

修改frame的3種方式

  • 直接使用CGRectMake函數(shù)
imageView.frame = CGRectMake(100, 100, 200, 200);
  • 利用臨時(shí)結(jié)構(gòu)體變量
CGRect tempFrame = imageView.frame;
tempFrame.origin.x = 100;
tempFrame.origin.y = 100;
tempFrame.size.width = 200;
tempFrame.size.height = 200;
imageView.frame = tempFrame;
  • 使用大括號(hào){}形式
imageView.frame = (CGRect){{100, 100}, {200, 200}};
  • 抽取重復(fù)代碼

    • 將相同代碼放到一個(gè)新的方法中
    • 不用的東西就變成方法的參數(shù)
  • 圖片的加載方式

    • 有緩存
    UIImage *image = [UIImage imageNamed:@"圖片名"];
    
      - 使用場(chǎng)合:圖片比較小封断、使用頻率較高
      - 建議把需要緩存的圖片直接放到Images.xcassets
    
    • 無(wú)緩存
    NSString *file = [[NSBundle mainBundle] pathForResource:@"圖片名" ofType:@"圖片的擴(kuò)展名"];
    UIImage *image = [UIImage imageWithContentsOfFile:@"圖片文件的全路徑"];
    
      - 使用場(chǎng)合:圖片比較大斯辰、使用頻率較小
      - 不需要緩存的圖片不能放在Images.xcassets
    
    • 放在Images.xcassets里面的圖片,只能通過(guò)圖片名去加載圖片
  • 什么是NSBundle?

    • 怎么找創(chuàng)建的程序包內(nèi)容


      查看主目錄.png
mainBundle.png
  • 延遲做一些事情
[abc performSelector:@selector(stand:) withObject:@"123" afterDelay:10];
// 10s后自動(dòng)調(diào)用abc的stand:方法坡疼,并且傳遞@"123"參數(shù)
  • 音頻文件的簡(jiǎn)單播放
// 創(chuàng)建一個(gè)音頻文件的URL(URL就是文件路徑對(duì)象)
NSURL *url = [[NSBundle mainBundle] URLForResource:@"音頻文件名" withExtension:@"音頻文件的擴(kuò)展名"];
// 創(chuàng)建播放器
self.player = [AVPlayer playerWithURL:url];
// 播放
[self.player play];
  • 優(yōu)秀的封裝代碼
    - (void)settingData{
    // 設(shè)置數(shù)據(jù)
    self.descLabel.text = [NSString stringWithFormat:@"當(dāng)前第%zd張,總共%zd張", self.currentIndex, kMaxIndex];
    self.imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%zd", self.currentIndex]];
    

}
```

音樂(lè)播放器

音樂(lè)
音樂(lè)
  • 要點(diǎn)一:毛玻璃效果
    • 代碼實(shí)現(xiàn)
    // 1.1 創(chuàng)建毛玻璃
    UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:self.bgImageView.bounds];
    toolBar.barStyle = UIBarStyleBlack;
    //添加工具條到要實(shí)現(xiàn)毛玻璃效果的容器中
    [self.bgImageView addSubview:toolBar];
       ```
    - 注意:在storyboard中ImageView無(wú)法添加子控件彬呻,而代碼可以實(shí)現(xiàn)這個(gè)功能。
    
  • 要點(diǎn)二:音樂(lè)播放
    • 代碼實(shí)現(xiàn)
      • 首先要導(dǎo)入<AVFoundation/AVFoundation.h>頭文件
      // 1.2 創(chuàng)建播放器
      
    NSString *path = [[NSBundle mainBundle] pathForResource:@"mySong1.mp3" ofType:nil];
    NSURL *url = [NSURL fileURLWithPath:path];
    AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithURL:url];
    self.player = [[AVPlayer alloc] initWithPlayerItem:playerItem];
    //播放音樂(lè)
    [self.player play];
    ```
    - 另一種播放音樂(lè)代碼是添加音頻文件的URL,此前已經(jīng)提到闸氮,這里就不詳述了剪况。

關(guān)于內(nèi)存管理

  • 批量圖片加載可使用無(wú)緩存加載
  • 圖片對(duì)象使用完及時(shí)釋放
  • 通過(guò)懶加載方式加載使用的圖片
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蒲跨,隨后出現(xiàn)的幾起案子译断,更是在濱河造成了極大的恐慌,老刑警劉巖或悲,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件孙咪,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡巡语,警方通過(guò)查閱死者的電腦和手機(jī)翎蹈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)捌臊,“玉大人杨蛋,你說(shuō)我怎么就攤上這事±砼欤” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵曙寡,是天一觀的道長(zhǎng)糠爬。 經(jīng)常有香客問(wèn)我,道長(zhǎng)举庶,這世上最難降的妖魔是什么执隧? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮户侥,結(jié)果婚禮上镀琉,老公的妹妹穿的比我還像新娘。我一直安慰自己蕊唐,他們只是感情好屋摔,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著替梨,像睡著了一般钓试。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上副瀑,一...
    開(kāi)封第一講書(shū)人閱讀 49,784評(píng)論 1 290
  • 那天弓熏,我揣著相機(jī)與錄音,去河邊找鬼糠睡。 笑死挽鞠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播信认,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼串稀,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了狮杨?” 一聲冷哼從身側(cè)響起母截,我...
    開(kāi)封第一講書(shū)人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎橄教,沒(méi)想到半個(gè)月后清寇,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡护蝶,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年华烟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片持灰。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡盔夜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出堤魁,到底是詐尸還是另有隱情喂链,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布妥泉,位于F島的核電站椭微,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏盲链。R本人自食惡果不足惜蝇率,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望刽沾。 院中可真熱鬧本慕,春花似錦、人聲如沸侧漓。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)火架。三九已至鉴象,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間何鸡,已是汗流浹背纺弊。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留骡男,地道東北人淆游。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親犹菱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拾稳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容