Uibutton and SetImage : 일관되게 작동하지 않음 - 일관성이 없습니다

StackOverflow https://stackoverflow.com/questions/1219852

  •  10-07-2019
  •  | 
  •  

문제

Uiview에 Uibutton이 있습니다. 보기가 표시 될 때 버튼 내부에 표시 할 이미지를 프로그래밍 방식으로 파악하고 싶습니다. UIView에서 DrawRect 메소드를 재정의하고 원하는 이미지를 표시하기 위해 SetImage를 사용했습니다. 그러나보기가 표시되면 때로는 원하는 이미지를 그립니다. 때로는 그렇지 않습니다. 이미지가 버튼에 표시되도록보기의 어느 곳에서나 만지야합니다. 도와주세요 !

다음은보기를위한 DrawRect 메소드입니다.

- (void)drawRect:(CGRect)rect
{
[myButton setImage:[UIImage imageNamed:@"myImage.png"] forState:UIControlStateNormal];
}

모든 것이 IB가 올바르게 연결되어 있습니다. 이미지가 나타나거나 일관되게 나타나지 않는 이유를 이해하지 못합니다. 매우 감사합니다.

도움이 되었습니까?

해결책

당신은 정말로 DrawRect를 무시하고 싶지 않습니다.

올바른 일은 UIViewController를 구현하고 재정의하는 것입니다. ViewWillAppear :.

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.myButton setImage:[UIImage imageNamed:@"myImage.png"] forState:UIControlStateNormal];
};

다른 팁

Groundhog는 다음과 같습니다 정답, 그러나 나는 당신의 코드에서 실제로 무슨 일이 일어나고 있는지, 그리고 왜 그것이 어떤 시간에 효과가 있는지 설명하고 싶습니다.

그만큼 drawRect 시스템이 뷰 개체가 화면에 자체 표시되기를 원할 때마다 메소드가 호출됩니다. 버튼 이미지를 설정합니다 drawRect 방법 ~ 할 것이다 버튼 이미지를 변경하지만 시스템이 이미 화면으로 그리기 과정에 있으므로 실제로 변경 사항이 표시되지 않습니다. 다음 시간을 다시 그려야합니다. 이 경우, 시야의 다른 곳을 만질 때.

설명해 주셔서 감사합니다. 불행히도이 코드는 다른 개발자와의 더 큰 프로젝트의 일부입니다. 현재 UIView를 UIViewController로 변경할 수 없습니다. 대신 버튼 이미지를 다른 방식으로 변경했습니다. uiview를 소유 viewcontroller의 서브 뷰에 추가하기 직전에 버튼의 상태를 변경했습니다. IE : 나는 발행했다

[myButton setImage:[UIImage imageNamed:@"myImage.png"] forState:UIControlStateNormal];

내 uiview를 하위 뷰로 추가하기 직전에. 즉:

[masterViewController.view addSubview:myView];

분명히 MyButton은 MyView의 일부입니다. 도움을 주셔서 감사합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top