Я создаю пользовательскую кнопку UIB в моей программе (не в IB), и мне бы хотелось, чтобы она показывала разные изображения в разных состояниях, поэтому я сделал:
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.
Спасибо всем за комментарии.