【发布时间】:2011-09-15 07:39:55
【问题描述】:
我正在我的程序中(不是在 IB 中)创建一个自定义 UIButton,我希望它在不同的状态下显示不同的图像,所以我做到了:
UIImage *learnImg=[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"01" ofType:@"png"]];
self.learn=[[UIButton buttonWithType:UIButtonTypeCustom] retain];
[self.learn setFrame:CGRectMake(148, 108,254,97)];
[[self.learn imageView] setContentMode:UIViewContentModeScaleAspectFit];
[self.learn setImage:learnImg forState:UIControlStateNormal];
UIImage *learnSelected=[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"02" ofType:@"png"]];
[self.learn setImage:learnSelected forState:UIControlEventTouchDown];
[self.learn addTarget:self action:@selector(loadLearn:) forControlEvents:UIControlEventTouchUpInside];
问题是,这两个图像的大小不同,所以当我点击按钮时,按钮的位置被“平移”(我相信这是由于“setFrame”行为,因为 xy 位置应该是相对的) .
我想不出解决这个问题的方法,我只想确保按钮在任何状态下都处于正确的位置。无论如何我可以为每个按钮设置一套完整的样式状态(帧、图像等)?还是有其他想法?
谢谢!
我终于通过两个动作事件重新设置按钮的中心来解决这个问题:UIControlEventTouchDown 和 UIControlEventTouchCancel。 谢谢大家的cmets。
【问题讨论】:
标签: iphone objective-c uibutton