Re: [問題] 如何更改button按下之後的圖片
※ 引述《spy0923 (spy0923)》之銘言:
: 各位前輩好:
: 小弟想實現button onclick時(1)未按下時背景是圖片一(statenormal),(2)按下未放開時是圖片二(statehighlighted),(3)按下放開之後是圖片三(非原始未按下狀態)
: 目前知道的是(1)(2)的作法,附上code
: (1)未按下時背景是圖片一 [myButton1 setBackgroundImage:[UIImage imageNamed : @
: "pic1.png"] forState:UIControlStateNormal];
: (2)按下未放開時是圖片二 [myButton1 setBackgroundImage:[UIImage imageNamed : @
: "pic2.png"] forState:UIControlStateHighlighted];
: button完整code:
: 定義button
: UIButton *myButton1 = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
: [myButton1 setBackgroundImage:[UIImage imageNamed : @"pic1.png"] forState:
: UIControlStateNormal];
: [myButton1 setBackgroundImage:[UIImage imageNamed : @"pic2.png"] forState:
: UIControlStateHighlighted];
: myButton1.frame = CGRectMake(0, 396, 64, 64);
: //[myButton1 addTarget:self action : @selector(onClick1: ) forControlEvents:
: UIControlEventTouchUpInside];
: [self.view addSubview:myButton1];
上面這些code 完全不需要寫
nib拉一拉就好了
: 定義click事件:
: -(void) onClick1: (id)sender{
: [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString : @
: "http://www.yahoo.com.tw"]]]
: [self.view addSubview:myButton1];
再add一次目的為何? 看不懂= =
在 onClick1裡面直接這樣寫就好了
dispatch_async(dispatch_get_main_queue(), ^{
[myButton1 setBackgroundImage:[UIImage imageNamed : @"pic3.png"] forState:
UIControlStateNormal];
});
onClick1後 畫面之所以沒有照你所設定那樣更新
是因為不是跑在main Thread上 或也可以用[self performSelectorOnMainThread....]
不過基本上現在我都用dispatch (GCD機制)比較好用:P
建議你去看一下GCD章節 dispatch 一定要會用
葡萄柚書 Beginning iOS5 Development Exploring the iOS SDK
: 如今欲在click之後將mybutton1的背景改成pic3.png 不知道該怎麼做?
: 還望各位不另賜教 謝謝!!(已試過forstateselected也是無效@@)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.162.188.103
※ 編輯: reon 來自: 1.162.188.103 (04/15 21:46)
推
04/23 23:25, , 1F
04/23 23:25, 1F
推
04/24 12:56, , 2F
04/24 12:56, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):