iOS入門之UI控件(一)

簡單說一下什么是UIView,直白的說就是在iPhone中班利,你看到的、摸到的都是UIView榨呆。比如:按鈕罗标、圖片、文字等积蜻。UIView是所有控件的父控件闯割,他擁有許多的子控件,接下來通過一張圖片來描述一下它的繼承體系結(jié)構(gòu)竿拆。

UIView繼承體系圖

*UIView常見的屬性和方法

UIView常見的屬性有很多宙拉,這里只介紹一下最常用的四個(gè)

@property (nonatomic) NSInteger tag; //用于表示控件的ID,父控件可以通過tag找到對應(yīng)的字控件丙笋,定義控件的唯一標(biāo)識

@property (nonatomic) CGRect bounds谢澈;//用于表示控件所在矩形框的位置和尺寸(以自己左上角為坐標(biāo)原點(diǎn))

@property (nonatomic) CGRect center;//控件中心位置(以父控件左上角為坐標(biāo)原點(diǎn))

@property (nonatomic) CGRect frame;//控件所在矩形框在父類控件中 ?的位置和尺寸(以父控件左上角為坐標(biāo)原點(diǎn))

UIView常見的方法

- (void) addSubView: (UIView *) view; //添加子控件

- (void) removeFromSuperview; //從父類控件中移除

- (nullable _kindof UIView *) viewwithTag: (NSInteger)tag;// 根據(jù)tag標(biāo)識找到對應(yīng)的控件


UIView - Lable

常見屬性(table)

@property(nullable, nonatomic,copy) ? NSString ? ? ? ? ? *text; ? ? ? ? ? ?// default is nil


@property(null_resettable, nonatomic,strong) UIFont ? ? ?*font; ? ? ? ? ? ?// default is nil (system font 17 plain)

@property(null_resettable, nonatomic,strong) UIColor ? ? *textColor; ? ? ? // default is nil (text draws black)

@property(nullable, nonatomic,strong) UIColor ? ? ? ? ? ?*shadowColor; ? ? // default is nil (no shadow)

@property(nonatomic) ? ? ? ?CGSize ? ? ? ? ? ? shadowOffset; ? ?// default is CGSizeMake(0, -1) -- a top shadow

@property(nonatomic) ? ? ? ?NSTextAlignment ? ?textAlignment; ? // default is NSTextAlignmentLeft

@property(nonatomic) ? ? ? ?NSLineBreakMode ? ?lineBreakMode; ? // default is NSLineBreakByTruncatingTail. used for single and multiple lines of text


UIView- UIImage View

UIImage View用于播放幀動畫的相關(guān)方法

- (void)startAnimating; ?//開始播放動畫

- (void)stopAnimating; ?//停止播放動畫

- (void)isAnimating; ?//判斷是否在播放動畫


UIImage View相關(guān)屬性

@property (nullable, nonatomic, strong) UIImage *image; // default is nil

@property (nullable, nonatomic, strong) UIImage *highlightedImage NS_AVAILABLE_IOS(3_0); // default is nil

@property (nonatomic, getter=isUserInteractionEnabled) BOOL userInteractionEnabled; // default is NO

@property (nonatomic, getter=isHighlighted) BOOL highlighted NS_AVAILABLE_IOS(3_0); // default is NO//

@property (nullable, nonatomic, copy) NSArray*animationImages; // The array must contain UIImages. Setting hides the single image. default is nil

@property (nullable, nonatomic, copy) NSArray*highlightedAnimationImages NS_AVAILABLE_IOS(3_0); // The array must contain UIImages. Setting hides the single image. default is nil

@property (nonatomic) NSTimeInterval animationDuration; ? ? ? ? // for one cycle of images. default is number of images * 1/30th of a second (i.e. 30 fps)

@property (nonatomic) NSInteger ? ? ?animationRepeatCount; ? ? ?// 0 means infinite (default is 0)


*實(shí)戰(zhàn)演練(動畫湯姆貓)

先看一下動畫效果



先將所用到的資源放到相應(yīng)的文件夾下


我們此次要向故事板中拖拽一個(gè)image view控件,把尺寸調(diào)到和故事板一樣大御板,再戳拽三個(gè)button(可以用shife + alt左擊長按拖拽復(fù)制)設(shè)置一下相應(yīng)的屬性锥忿。


拖線關(guān)聯(lián)后


.m文件 - 三個(gè)button方法(使用了封裝)

- (IBAction)drink {

[self startAnimating:81 picName:@"drink"];

}

// 放P

- (IBAction)fart {

[self startAnimating:28 picName:@"fart"];

}

// 敲頭

- (IBAction)knockout {

[self startAnimating:81 picName:@"knockout"];

}

執(zhí)行動畫的方法

- (void)startAnimating:(int)count picName:(NSString *)picName

{

// 如果當(dāng)前圖片框正在執(zhí)行動畫, 那么直接return, 什么都不做(沒有開啟一個(gè)新動畫)

if (self.imgViewCat.isAnimating) {

return;

}

// 1. 把圖片加載到數(shù)組中

// 0.動態(tài)加載圖片到一個(gè)NSArray中

NSMutableArray *arrayM = [NSMutableArray array];

for (int i = 0; i < count; i++) {

// 拼接圖片名稱

NSString *imgName = [NSString stringWithFormat:@"%@_%02d.jpg", picName, i];

// 根據(jù)圖片名稱加載圖片

// 通過imageNamed: 這種方式加載圖片, 加載好的圖片會一直保存寫在內(nèi)存中, 不會釋放.這樣下次如果再使用同樣的圖片的時(shí)候就不需要再重新加載了, 因?yàn)閮?nèi)存里面已經(jīng)有了。缺點(diǎn)就是: 如果加載了大量的圖片, 那么這些圖片會一直保留在內(nèi)存中怠肋,導(dǎo)致應(yīng)用程序占用內(nèi)存過大(這就叫緩存)

// 使用這種方式加載圖片, 加載起來的圖片即便沒有強(qiáng)類型指針引用也不會銷毀(會被緩存)

//UIImage *imgCat = [UIImage imageNamed:imgName];

// 使用下面這種方式加載的圖片, 只要沒有強(qiáng)類型指針引用就會被銷毀了

// 解決: 換一種加載圖片的方式, 不要使用緩存

// 獲取圖片的完成的路徑

NSString *path = [[NSBundle mainBundle] pathForResource:imgName ofType:nil];

// 這里的參數(shù)不能再傳遞圖片名稱了, 這里需要傳遞一個(gè)圖片的完整路徑

UIImage *imgCat = [UIImage imageWithContentsOfFile:path];

// 把圖片加載到數(shù)組中

[arrayM addObject:imgCat];

}

// 2. 設(shè)置UIImageView的animationImages屬性為對應(yīng)的圖片集合

self.imgViewCat.animationImages = arrayM;

// 3. 動畫持續(xù)時(shí)間

self.imgViewCat.animationDuration = self.imgViewCat.animationImages.count * 0.1;

// 4. 重復(fù)次數(shù)

self.imgViewCat.animationRepeatCount = 1;

// 5. 啟動動畫

[self.imgViewCat startAnimating];

// 清空圖片集合

// 這樣些寫的問題是, 當(dāng)動畫啟動以后, 動畫還沒開始執(zhí)行, 就已經(jīng)讓圖片集合清空了, 也就是說self.imgViewCat.animationImages 里面已經(jīng)沒有圖片了, 所以動畫就不執(zhí)行了敬鬓。

//self.imgViewCat.animationImages = nil;

// self.imgViewCat.animationImages = nil; 需要延遲一段時(shí)間執(zhí)行, 當(dāng)動畫執(zhí)行完畢以后再清空這些圖片

//[self.imgViewCat setAnimationImages:nil];

// 設(shè)置圖片框在調(diào)用setAnimationImages:nil方法的時(shí)候延遲執(zhí)行

[self.imgViewCat performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:self.imgViewCat.animationImages.count * 0.1];

}

***執(zhí)行動畫方法中,詳細(xì)的介紹了封裝與動畫結(jié)束后內(nèi)存的清除笙各,保證了動畫的順利的執(zhí)行*****

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钉答,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子酪惭,更是在濱河造成了極大的恐慌希痴,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件春感,死亡現(xiàn)場離奇詭異砌创,居然都是意外死亡虏缸,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進(jìn)店門嫩实,熙熙樓的掌柜王于貴愁眉苦臉地迎上來刽辙,“玉大人,你說我怎么就攤上這事甲献≡诅停” “怎么了?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵晃洒,是天一觀的道長慨灭。 經(jīng)常有香客問我,道長球及,這世上最難降的妖魔是什么氧骤? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮吃引,結(jié)果婚禮上筹陵,老公的妹妹穿的比我還像新娘。我一直安慰自己镊尺,他們只是感情好朦佩,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著庐氮,像睡著了一般语稠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上旭愧,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天颅筋,我揣著相機(jī)與錄音,去河邊找鬼输枯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛占贫,可吹牛的內(nèi)容都是我干的桃熄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼型奥,長吁一口氣:“原來是場噩夢啊……” “哼瞳收!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起厢汹,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤螟深,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后烫葬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體界弧,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡凡蜻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了垢箕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片划栓。...
    茶點(diǎn)故事閱讀 40,444評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖条获,靈堂內(nèi)的尸體忽然破棺而出忠荞,到底是詐尸還是另有隱情,我是刑警寧澤帅掘,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布委煤,位于F島的核電站,受9級特大地震影響修档,放射性物質(zhì)發(fā)生泄漏素标。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一萍悴、第九天 我趴在偏房一處隱蔽的房頂上張望头遭。 院中可真熱鬧,春花似錦癣诱、人聲如沸计维。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鲫惶。三九已至,卻和暖如春实抡,著一層夾襖步出監(jiān)牢的瞬間欠母,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工吆寨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赏淌,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓啄清,卻偏偏與公主長得像六水,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子辣卒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評論 2 359

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