iOS:UIView視圖與組件控件

http://www.cnblogs.com/XYQ-208910/p/4761646.html

一蠢棱、UIView常見屬性

(1)@property(nonatomic,readonly)UIView *superview; //獲取自己的父控件對象

(2)@property(nonatomic,readonly,copy)UIView *subviews;//獲取自己的所有子控件對象

(3)@property(nonatomic)NSInteger tag;//控件的ID標(biāo)識,父控件可以通過tag來找到對應(yīng)的子控件,默認(rèn)為0

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

(5)@property(nonatomic) CGRect bounds;//控件所在矩形框的位置和尺寸(以自己左上角為坐標(biāo)原點,所以bounds的x\y永遠(yuǎn)為0)

(6)@property(nonatomic) CGPoint center;//控件中點的位置(以父控件的左上角為坐標(biāo)原點)

(7)@property(nonatomic) CGAffineTransform transform;//控件的形變屬性(可以設(shè)置旋轉(zhuǎn)角度甩栈、比例縮放泻仙、平移等屬性)

a.旋轉(zhuǎn):CGAffineTransform?CGAffineTransformScale(CGAffineTransform t,??CGFloat sx, CGFloat sy)

sx和sy為坐標(biāo)放縮倍數(shù)

b.放縮:CGAffineTransform CGAffineTransformRotate(CGAffineTransform t,CGFloat angle)

angle:旋轉(zhuǎn)度數(shù)

c.反轉(zhuǎn):CGAffineTransform CGAffineTransformInvert(CGAffineTransform t)

d. 兩個矩陣仿射為一個新的矩陣:

CGAffineTransformCGAffineTransformConcat(CGAffineTransform?t1,CGAffineTransform t2)

e.判斷兩個矩陣是否相等:

bool?CGAffineTransformEqualToTransform(CGAffineTransform?t1,?CGAffineTransform t2)

創(chuàng)建一個仿射矩陣

CGAffineTransformMake?直接賦值來創(chuàng)建

CGAffineTransformMakeRotation?設(shè)置角度來生成矩陣

結(jié)果就是

CGAffineTransformMakeScale??設(shè)置縮放,及改變a量没、d的值

CGAffineTransformMakeTranslation??設(shè)置偏移

改變已經(jīng)存在的放射矩陣

CGAffineTransformTranslate??原始的基礎(chǔ)上加上偏移

CGAffineTransformScale加上縮放

CGAffineTransformRotate加上旋轉(zhuǎn)

CGAffineTransformInvert?反向的仿射矩陣比如(x玉转,y)通過矩陣t得到了(x',y')那么通過這個函數(shù)生成的t'作用與(x',y')就能得到原始的(x,y)

CGAffineTransformConcat?通過兩個已經(jīng)存在的放射矩陣生成一個新的矩陣t' =?t1 *?t2

應(yīng)用仿射矩陣

CGPointApplyAffineTransform?得到新的點

CGSizeApplyAffineTransform??得到新的size

CGRectApplyAffineTransform??得到新的rect

視圖view的組件圖框frame的類型為CGRect結(jié)構(gòu)體

struct CGRect

{

CGPoint origin;

CGSize size;

};

struct CGPonit

{

CGFloat x;

CGFloat y;

};

struct CGSize

{

CGFloat width;

CGFloat height;

};

視圖view的組件形變控件transform的類型為CGAffineTransform結(jié)構(gòu)體,就是一個矩陣(可以伸縮、平移殴蹄、旋轉(zhuǎn)等)

struct CGAffineTransform {

CGFloat a, b, c, d;

CGFloat tx, ty;

};

二究抓、UIButton的初始化

–最普通的初始化方法

UIButton *btn = [[UIButton alloc] initWithFrame:rect];

–快速初始化

UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];

–type參數(shù)用來指定按鈕的類型,一共有6種選擇:

?UIButtonTypeCustom:無類型袭灯,按鈕的內(nèi)容需要自定義

?UIButtonTypeRoundedRect:圓矩形邊框

?UIButtonTypeDetailDisclosure:

?UIButtonTypeInfoLight:

?UIButtonTypeInfoDark:

?UIButtonTypeContactAdd:

1#import"ViewController.h"

2typedefenum

3{

4buttonTypeLeft=1,

5buttonTypeRight,

6buttonTypeUp,7buttonTypeDown,8buttonTypeRotateL,9buttonTypeRotateR,10buttonTypeScaleUp,11buttonTypeScaleDown,1213}buttonType;14@interfaceViewController ()

15@property (weak, nonatomic) IBOutlet UIView *viewMan;

1617@end

1819@implementationViewController

20//移動方向

21- (IBAction)buttonDirectionClicked:(UIButton *)sender22{23//父視圖的長度和高度24NSInteger screenWidth =self.view.frame.size.width;25NSInteger screenHeight =self.view.frame.size.height;2627//子視圖28CGRect rect =self.viewMan.frame;29//每次移動距離30NSInteger offset =5;31//父控件通過tag標(biāo)識獲取視圖中子控件(組件)32switch(sender.tag)33{34casebuttonTypeDown:35rect.origin.y +=offset;36if(rect.origin.y >=screenHeight)37{38rect.origin.y = -rect.size.height;39}40break;41casebuttonTypeUp:42rect.origin.y -=offset;43if(rect.origin.y <= -rect.size.height)44{45rect.origin.y =screenHeight;46}47break;48casebuttonTypeLeft:49rect.origin.x -=offset;50if(rect.origin.x <= -rect.size.width)51{52rect.origin.x =screenWidth;53}54break;55casebuttonTypeRight:56rect.origin.x +=offset;57if(rect.origin.x >=screenWidth)58{59rect.origin.x = -rect.size.width;60}61break;62}63self.viewMan.frame =rect;64}6566//旋轉(zhuǎn)67- (IBAction)buttonRotateClicked:(UIButton *)sender68{69//子視圖這個控件的坐標(biāo)矩陣70CGAffineTransform form =self.viewMan.transform;71switch(sender.tag) {72casebuttonTypeRotateL:73form = CGAffineTransformRotate(form, -M_2_PI/2);

74break;

75casebuttonTypeRotateR:

76form = CGAffineTransformRotate(form, M_2_PI/2);77break;78}

79self.viewMan.transform =form;80}

8182//放縮

83- (IBAction)buttonScaleClicked:(UIButton *)sender

84{85//子視圖這個控件的坐標(biāo)矩陣

86CGAffineTransform form =self.viewMan.transform;

87CGFloat scaleFator =0.0f;

8889switch(sender.tag) {

90casebuttonTypeScaleUp刺下;

91scaleFator =1.2;

92break;

93casebuttonTypeScaleDown:

94scaleFator =0.8;

95break;

96}

97form =CGAffineTransformScale(form, scaleFator, scaleFator);

98self.viewMan.transform =form;

99}

100

101- (void)viewDidLoad {

102[super viewDidLoad];

103//Do any additional setup after loading the view, typically from a nib.

104}

105

106- (void)didReceiveMemoryWarning {

107[super didReceiveMemoryWarning];

108//Dispose of any resources that can be recreated.

109}

110

111@end


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市妓蛮,隨后出現(xiàn)的幾起案子怠李,更是在濱河造成了極大的恐慌圾叼,老刑警劉巖蛤克,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異夷蚊,居然都是意外死亡构挤,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門惕鼓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來筋现,“玉大人,你說我怎么就攤上這事箱歧》桑” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵呀邢,是天一觀的道長洒沦。 經(jīng)常有香客問我,道長价淌,這世上最難降的妖魔是什么申眼? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任瞒津,我火速辦了婚禮,結(jié)果婚禮上括尸,老公的妹妹穿的比我還像新娘巷蚪。我一直安慰自己,他們只是感情好濒翻,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布屁柏。 她就那樣靜靜地躺著,像睡著了一般肴焊。 火紅的嫁衣襯著肌膚如雪前联。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天娶眷,我揣著相機與錄音似嗤,去河邊找鬼。 笑死届宠,一個胖子當(dāng)著我的面吹牛烁落,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播豌注,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼伤塌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了轧铁?” 一聲冷哼從身側(cè)響起每聪,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎齿风,沒想到半個月后药薯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡救斑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年童本,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片脸候。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡穷娱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出运沦,到底是詐尸還是另有隱情泵额,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布携添,位于F島的核電站嫁盲,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏薪寓。R本人自食惡果不足惜亡资,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一澜共、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧锥腻,春花似錦嗦董、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至幸斥,卻和暖如春匹摇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背甲葬。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工廊勃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人经窖。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓坡垫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親画侣。 傳聞我的和親對象是個殘疾皇子冰悠,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

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

  • Quartz2D以及drawRect的重繪機制字?jǐn)?shù)1487 閱讀21 評論1 喜歡1一、什么是Quartz2D Q...
    PurpleWind閱讀 762評論 0 3
  • >*很不幸配乱,沒人能告訴你母體是什么溉卓,你只能自己體會* --駭客帝國 在第四章“可視效果”中,我們研究了一些增強圖層...
    夜空下最亮的亮點閱讀 1,653評論 0 2
  • UIView(控件) 功能一:界面顯示1. 屏幕上顯示的所有UI元素都叫做控件搬泥,也有人叫做視圖桑寨、組件;按鈕(UIB...
    翻這個墻閱讀 628評論 0 0
  • VLC的集成和使用 VLC介紹 VLC Media Player (VideoLAN) 為 Windows佑钾、Lin...
    Pocket閱讀 19,541評論 75 66
  • 一西疤、時差的國度烦粒,視頻里的團年飯 家人團年飯定在11點休溶,說晚飯要在部隊食堂團年! 于是鬧鐘定在05:45扰她,視個頻看你...
    紫蒲溪溪主閱讀 147評論 2 2