나는 (안 IB에서) 내 프로그램에서 사용자 지정있는 UIButton을 만드는 오전 나는 다른 상태에 다른 이미지를 표시하는 데 싶습니다, 그래서 내가 그랬어 :설정 사용자 지정있는 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];
문제는 두 이미지가 서로 다른 크기를 가지므로 버튼을 클릭하면 버튼의 위치가 '변환'됩니다 (xy 위치가 상대이어야하므로 'setFrame'동작으로 인한 것입니다).
이 문제를 해결할 방법을 생각할 수 없습니다. 원하는 모든 상태의 버튼이 올바른 위치에 있는지 확인하는 것이 좋습니다. 어쨌든 각 버튼에 대한 스타일 세트를 설정할 수 있습니까? 버튼 상태 (프레임, 이미지 등)? 아니면 다른 생각?
감사합니다.
마지막으로 UIControlEventTouchDown 및 UIControlEventTouchCancel이라는 두 가지 동작 이벤트를 통해 단추 중심을 다시 설정하여이 작업을 수행했습니다. 모든 의견에 감사드립니다.
감사하지만 이것은 또 다른 문제입니다. "UIControlStateHighlighted"상태에서 이미지를 설정하면 "UIControlStateSelected"도 포함되어 있어도 버튼이 설정 한 이미지로 변경되지 않습니다. 무슨 일이 벌어지고 있는지 전혀 모르겠다 : S – dreamy129
버튼 동작 내에서'button.selected = YES; '를 사용하여 버튼의 상태를 적절히 변경하여 작동하는지 확인한다. – visakh7