UI基礎和UIView

為了學習相關(guān)的原理涣觉,使用Empty Application模板建立工程;
在開始輸入正常學習的代碼之前血柳,要先:
1官册、將ARC關(guān)閉;
2难捌、將AppDelegate.h文件中的屬性聲明里的strong改為retain膝宁,并在AppDelegate.m文件中重寫dealloc方法;
3根吁、在application:didFinishLaunchingWithOptions:方法中定義一個UIViewController员淫,并設為根視圖控制器;
Xcode7之后击敌,沒有根視圖控制器程序會崩潰介返,根視圖控制器也會被添加到父視圖的數(shù)組中,為了不影響我們操作view沃斤,將根視圖控制器寫在最后面

用宏定義將常用的數(shù)據(jù)比如屏幕寬高等圣蝎,設為宏;
擴充自己的庫衡瓶;
總是忘記設置背景顏色以及將view放到相應的父視圖中徘公;
frame要根據(jù)父視圖的坐標系設置;

在設置好了origin之后改變size時哮针,不是以view中心為參照進行縮放关面;
盡量不要用center的setter方法來設置view的位置

在設置屬性時用self.的setter方法使retainCount+1
在開辟空間的時候retainCount由0變1
所以屬性的引用計數(shù)是2
需要在放入父類之后對實例方法執(zhí)行一次release一次

定義好window后要將它設為key和可見坦袍;

[self.window makeKeyAndVisible];

創(chuàng)建window

self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
//[UIScreen mainScreen].bounds 返回的是手機屏幕的frame屬性;
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];

創(chuàng)建視圖

UIView *aView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
[self.window addSubview:aView];

背景色

方法1

aView.backgroundColor = [UIColor redColor];

方法2

aView.backgroundColor = [UIColor colorWithRed:1 green:0 blue:0 alpha:1];

我們工作后一般用的是這種方法等太,可以用RGB值來設定顏色捂齐,因為工作時僅靠方法1中的幾種顏色已經(jīng)無法滿足我們的需求
colorWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue;
填入的顏色數(shù)據(jù)通常以n/255.0的形式來表現(xiàn),n就是RGB值缩抡;
隨機顏色

aView.backgroundColor = [UIColor colorWithRed:arc4random()%256/255.0 
                                        green:arc4random()%256/255.0 
                                         blue:arc4random()%256/255.0];

ps:加.0是因為兩個整數(shù)做除法只能生成整數(shù)

根據(jù)父視圖取子視圖

UIView *v = [[UIView alloc] init];
[self.window addSubview:v];
UIView *a = self.window.subviews[0];

subviews返回的是一個子視圖數(shù)組辛燥,可以用數(shù)組取值的方式按順序取出子視圖;

根據(jù)子視圖取父視圖

UIWindow *tempView = (UIWindow*)v.superview;

因為superview方法返回的是UIView類型的對象缝其,所以如果父視圖是window的話需要強轉(zhuǎn);
或者直接用UIView類型的指針來指向UIWindow的對象也可以徘六,這就是OC的多態(tài)内边;

透明度,隱藏待锈,刪除

UIView *tempSuperview = [[UIView alloc] init];
UIView *tempSubview = [[UIView alloc] init];
[self.window addSubview:tempSuperview];
[tempSuperview addSubview:tempSubview];

tempSuperview.alpha = 0.5;
//設置父視圖的透明度后漠其,子視圖也會相應透明,但子視圖的alpha屬性沒變竿音,如果子視圖的alpha屬性<1和屎,那么子視圖位置會顯示和父視圖融合后的背景色,否則顯示的是和父視圖相同的透明度的效果春瞬;
tempSuperview.hidden = YES;
//父視圖設置隱藏屬性為YES后柴信,子類也會隱藏,但子類的隱藏屬性不變
[tempSuperview removeFromSuperview];
//父視圖被從爺視圖刪除后宽气,子視圖也會消失随常;
//將被刪除的父視圖添加回來后,發(fā)現(xiàn)子視圖也在萄涯;

改變子視圖的位置

這幾個改變位置的方法只能對自己的子視圖用绪氛;

[self.window addSubview:tempSubview];//子視圖在已經(jīng)添加在父視圖的情況下,被添加到爺視圖上后涝影,父視圖中的子視圖會被自動刪除枣察;
//這個應該是在蘋果的內(nèi)部實現(xiàn)中設置的;
[self.window insertSubview:tempSubview aboveSubview:tempSuperview];
//把XX移動到XX下面燃逻;
[self.window insertSubview:tempSubview belowSubview:tempSuperview];
//把XX移動到XX上面序目;
//這樣改變位置后,數(shù)組下標會發(fā)生改變唆樊,說明誰壓著誰和數(shù)組的排序是一個聯(lián)動關(guān)系宛琅;
[self.window exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
//交換兩個子視圖的下標
[self.window bringSubviewToFront:tempSuperview];
//將XX帶到最前面;
[self.window sendSubviewToBack:tempSuperview];
//將XX發(fā)送到最后面逗旁;

bounds

bounds返回的是一個CGRect類型的結(jié)構(gòu)體嘿辟,前兩個值是指視圖頂點對于它自身坐標系的位置舆瘪,后兩個值是視圖的size;
改變bounds的前兩個點的數(shù)據(jù)不會改變視圖本身的位置,但會使視圖自身的坐標系原點發(fā)生改變量的相對位移红伦,由于坐標系原點被改變了英古,相對于這個原點所設置的子視圖的位置也會被改變;
所以這是一種一次性操作所有子視圖的方法昙读,雖然只是位置召调,但我想在某些情況下會產(chǎn)生指導意義;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蛮浑,一起剝皮案震驚了整個濱河市唠叛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌沮稚,老刑警劉巖艺沼,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蕴掏,居然都是意外死亡障般,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門盛杰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挽荡,“玉大人,你說我怎么就攤上這事即供《猓” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵募狂,是天一觀的道長办素。 經(jīng)常有香客問我,道長祸穷,這世上最難降的妖魔是什么性穿? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮雷滚,結(jié)果婚禮上需曾,老公的妹妹穿的比我還像新娘。我一直安慰自己祈远,他們只是感情好呆万,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著车份,像睡著了一般谋减。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上扫沼,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天出爹,我揣著相機與錄音庄吼,去河邊找鬼。 笑死严就,一個胖子當著我的面吹牛总寻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播梢为,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼渐行,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了铸董?” 一聲冷哼從身側(cè)響起祟印,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎粟害,沒想到半個月后旁理,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡我磁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了驻襟。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夺艰。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖沉衣,靈堂內(nèi)的尸體忽然破棺而出郁副,到底是詐尸還是另有隱情,我是刑警寧澤豌习,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布存谎,位于F島的核電站,受9級特大地震影響肥隆,放射性物質(zhì)發(fā)生泄漏既荚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一栋艳、第九天 我趴在偏房一處隱蔽的房頂上張望恰聘。 院中可真熱鬧,春花似錦吸占、人聲如沸晴叨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽兼蕊。三九已至,卻和暖如春件蚕,著一層夾襖步出監(jiān)牢的瞬間孙技,已是汗流浹背产禾。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留绪杏,地道東北人下愈。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像蕾久,于是被迫代替她去往敵國和親势似。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

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