addSubview? 和 insertSubView 區(qū)別
子視圖是以棧的方式存放的。
每次addsubview時(shí)都是在最后面添加杈笔。
每次在addsubview前和addsubview后可以看看[self.view.subViews count];
你看看你的子視圖是被添加到哪個(gè)位置了夹囚。
另外[self.view addSubView:xx.view]?? 其實(shí)就等于[self.view insertSubView:xx.view atIndex:[self.view.subViews count]];
即在最頂層添加view部念。
總之:
addSubview是一層一層往上加,新加的只能放到最上層土榴,
insertSubView可以控制將view添加到指定的層诀姚。
參考:addSubview和insertSubview 區(qū)別
CGAffineTransformMakeTranslation 和 CGAffineTransformTranslate
參考:CGAffineTransformMakeTranslation/CGAffineTransformTranslate的區(qū)別
1.CGAffineTransformMakeTranslation每次都是以最初位置的中心點(diǎn)為起始參照
CGAffineTransformTranslate每次都是以傳入的transform為起始參照
CGAffineTransformIdentity為最初狀態(tài),即最初位置的中心點(diǎn)
2.3個(gè)按鈕玷禽,bt1赫段,bt2,bt3矢赁,bt1和bt2控制bt3的移動(dòng)
(IBAction)bt1clicked:(id)sender {
self.bt3.transform = CGAffineTransformMakeTranslation(10, 0);
}
(IBAction)bt2clicked:(id)sender {
//self.bt3.transform = CGAffineTransformTranslate(CGAffineTransformIdentity, 10, 0);
self.bt3.transform = CGAffineTransformTranslate(self.bt3.transform, 10, 0);
}
點(diǎn)擊bt1糯笙,第一次移動(dòng)10個(gè)像素,以后都是以最初位置的中心點(diǎn)為起始參照撩银,所以后續(xù)bt1無(wú)論點(diǎn)擊多少次给涕,按鈕都在初始位置偏移10個(gè)像素的位置不動(dòng)
點(diǎn)擊bt1一次,再點(diǎn)擊bt2一次额获,偏移20像素够庙,點(diǎn)擊bt2時(shí),上一次按鈕點(diǎn)擊的偏移作為這次的參照
只點(diǎn)擊bt2一次抄邀,偏移10個(gè)像素
不斷點(diǎn)擊bt2首启,bt3不斷偏移10個(gè)像素
bt2clicked的第一句不注釋?zhuān)?/p>
第一次點(diǎn)擊bt2,bt3偏移20撤摸,后續(xù)再點(diǎn)擊毅桃,永遠(yuǎn)再第一次點(diǎn)擊后的位置褒纲,再點(diǎn)擊bt1,回到初始偏移10的位置(往回走了10)
點(diǎn)擊bt1钥飞,偏移10莺掠,再點(diǎn)擊bt2,在bt1點(diǎn)擊基礎(chǔ)上再偏移10读宙,后續(xù)再點(diǎn)擊不動(dòng)( CGAffineTransformTranslate(CGAffineTransformIdentity, 10, 0);每次都是從最初位置開(kāi)始偏移)