作者reon (Traveler)
看板MacDev
标题Re: [问题] 如何更改button按下之後的图片
时间Sun Apr 15 21:45:48 2012
※ 引述《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)
1F:推 freedom76912:我找不到NIB哪里可以拉这些耶@@ 可以说明一下吗 感谢 04/23 23:25
2F:推 freedom76912:看到了....XD 04/24 12:56