UIButton : 선택된 강조된 상태에 대한 이미지 설정 및 선택으로 설정했지만 선택한 상태의 버튼을

버튼 상태에 대한 이미지를 보통, 강조 표시 및 선택으로 설정했지만 선택한 상태의 버튼을 누르고 강조 표시하면 강조 표시된 이미지가 표시되지 않고 회색으로 표시됩니다. 버튼을 선택했을 때 강조 표시된 상태로 이미지를 설정할 수 있습니까?

내 코드 :

[button setImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"pressed.png"] forState:UIControlStateHighlighted];
[button setImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateSelected];

내가 할 때 :

[button setSelected:YES];

버튼을 누르면 “pressed.png”이미지가 선택되지 않습니다.



답변

해결책을 찾았습니다 : 추가 라인을 추가해야합니다.

[button setImage:[UIImage imageNamed:@"pressed.png"] forState:UIControlStateSelected | UIControlStateHighlighted];


답변

Interface Builder에서이를 수행 할 수 있습니다.

선택 UIButton당신이 설정하고자 IB로 이동 후를 attributes inspector.

스크린 샷에서 사용자 정의 버튼 유형을 사용하고 있지만 중요 하지 않습니다 .

맞춤 기본값

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오


답변

스위프트 3

// Default state (previously `.Normal`)
button.setImage(UIImage(named: "image1"), for: [])

// Highlighted
button.setImage(UIImage(named: "image2"), for: .highlighted)

// Selected
button.setImage(UIImage(named: "image3"), for: .selected)

// Selected + Highlighted
button.setImage(UIImage(named: "image4"), for: [.selected, .highlighted])

배경 이미지를 설정하려면 setBackgroundImage(_:for:)

스위프트 2.x

// Normal
button.setImage(UIImage(named: "image1"), forState: .Normal)

// Highlighted
button.setImage(UIImage(named: "image2"), forState: .Highlighted)

// Selected
button.setImage(UIImage(named: "image3"), forState: .Selected)

// Selected + Highlighted
button.setImage(UIImage(named: "image4"), forState: [.Selected, .Highlighted])


답변

나는 대부분의 포스터가 그 요점을 완전히 놓치고 있다고 생각합니다. 나는 같은 문제가 있었다. 원래 질문은 IB에서 설정할 수없고 일부 어두워 짐과 함께 기본 상태로 돌아가는 선택된 버튼 (COMBINING BOTH STATES)의 강조 표시된 상태에 관한 것이 었습니다. 한 게시물로만 작동하는 솔루션 :

[button setImage:[UIImage imageNamed:@"pressed.png"] forState:UIControlStateSelected | UIControlStateHighlighted];


답변

그럴만한 이유가 있다면,이 방법을 사용할 것입니다

이 목표를 추가하십시오 :

[button addTarget:self action:@selector(buttonTouchDown:) forControlEvents:UIControlEventTouchDown];
[button addTarget:self action:@selector(buttonTouchUp:) forControlEvents:UIControlEventTouchUpInside];


-(void)buttonTouchDown:(id)sender{
    UIButton *button=(UIButton *)sender;
    if(button.selected){
        [button setImage:[UIImage imageNamed:@"pressed.png"] forState:UIControlStateNormal];
    }
}

-(void)buttonTouchUp:(id)sender{
    UIButton *button=(UIButton *)sender;
    [button setImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal];
}


답변

Swift 3.x에서는 다음과 같은 방법으로 버튼을 선택할 때 강조 표시된 이미지를 설정할 수 있습니다.

// Normal state
button.setImage(UIImage(named: "normalImage"), for: .normal) 

// Highlighted state (before button is selected)
button.setImage(UIImage(named: "pressedImage"), for: .highlighted)

// Selected state
button.setImage(UIImage(named: "selectedImage"), for:  .selected)

// Highlighted state (after button is selected)
button.setImage(UIImage(named: "pressedAfterBeingSelectedImage"), 
                for:  UIControlState.selected.union(.highlighted))


답변

신속하게 당신은 할 수 있습니다 :

button.setImage(UIImage(named: "selected"),
                forState: UIControlState.selected.union(.highlighted))