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];
인터페이스 작성기에서 이 작업을 수행할 수 있습니다.
다음을 선택합니다.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에서 설정할 수 없고 약간의 어두워짐과 함께 기본 상태로 되돌아가는 선택 버튼(둘 다 상태 결합)의 강조 표시된 상태에 대한 것이었습니다.하나의 게시물에서 언급된 작동 솔루션:
[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))
저의 경우 UI 버튼을 변경해야 합니다.입력 위치.custom
에게
그리고:
button.setImage(UIImage(named: "unchecked"), for: .normal)
button.setImage(UIImage(named: "checked"), for: [.selected, .highlighted])
탭핑을 처리할 때:
button.isSelected = !button.isSelected
제가 틀렸다면 고쳐주세요.함으로써
[button setSelected:YES];
선택한 대로 단추의 상태를 명확하게 변경합니다.따라서 자연스럽게 당신이 제공한 코드에 의해 당신의 사례에서 선택된 상태에 대해 확인될 것입니다.png
Swift에서 이 기능이 어떻게 작동하는지 궁금해하는 사람이 있다면, 제 해결책은 다음과 같습니다.
button.setImage("normal.png", forState: .Normal)
button.setImage("highlighted.png", forState: .Highlighted)
button.setImage("selected.png", forState: .Selected)
var selectedHighLightedStates: UIControlState = UIControlState.Highlighted
selectedHighLightedStates = selectedHighLightedStates.union(UIControlState.Selected)
button.setImage("selectedHighlighted.png", forState: selectedHighLightedStates)
스위프트 3+
button.setImage(UIImage(named: "selected_image"), for: [.selected, .highlighted])
OR
button.setImage(UIImage(named: "selected_image"), for: UIControlState.selected.union(.highlighted))
즉, 버튼 전류가selected
상태, 그리고 나서 그것을 만지고, 보여줍니다.highlight
주.
설정하는 데 문제가 있었습니다.imageView.highlighted = NO;
(YES 설정이 제대로 작동하고 이미지가 강조 표시된 이미지로 변경됨).
해결책은 전화였습니다.[imageView setHighlighted:NO];
모든 것이 제대로 작동했습니다.
전화할 위치
[button addTarget:self action:@selector(test:) forControlEvents:UIControlEventTouchUpInside];
방법:
-(void)test:(id)sender{
UIButton *button=(UIButton *)sender;
if (_togon){
[button setTitleColor:UIColorFromRGB(89,89, 89) forState:UIControlStateNormal];
_togon=NO;
}
else{
[button setTitleColor:UIColorFromRGB(28, 154, 214) forState:UIControlStateNormal];
_togon=YES;
}
}
위의 신용은 Jorge에게 있지만, 저는 완전한 작동 솔루션을 제공하면서 그것을 조금 개선했습니다.
사마린 C#
비트적 OR을 수행하는 것은 어떤 이유에서인지 작동하지 않습니다.
button.SetImage(new UIImage("ImageNormal"), UIControlState.Normal);
button.SetImage(new UIImage("ImagePressed"), UIControlState.Selected | UIControlState.Highlighted | UIControlState.Focused);
다음 작품들
button.SetImage(new UIImage("ImageNormal"), UIControlState.Normal);
button.SetImage(new UIImage("ImagePressed"), UIControlState.Selected);
button.SetImage(new UIImage("ImagePressed"), UIControlState.Highlighted);
button.SetImage(new UIImage("ImagePressed"), UIControlState.Focused);
선택한 상태에 대한 사용자 지정 버튼을 길게 누를 때 OS가 기본적으로 제공하는 강조 표시된 색조가 필요한 경우 이 UIButton 하위 클래스를 사용합니다.스위프트 5에서 작성:
import Foundation
import UIKit
class HighlightOnSelectCustomButton: UIButton {
override var isHighlighted: Bool {
didSet {
if (self.isSelected != isHighlighted) {
self.isHighlighted = self.isSelected
}
}
}
}
언급URL : https://stackoverflow.com/questions/5592646/uibutton-set-image-for-selected-highlighted-state
'source' 카테고리의 다른 글
성능 테스트를 위해 스칼라와 함께 1억 개의 레코드를 MongoDB에 로드하는 방법은 무엇입니까? (0) | 2023.06.21 |
---|---|
getResources().getColor()가 더 이상 사용되지 않습니다. (0) | 2023.06.11 |
Angular 2 호출 집합Interval() 정의되지 않은 서비스 양식 종속성 주입 (0) | 2023.06.11 |
1064. SQL 구문에 오류가 있습니다. MariaDB 서버 버전에 해당하는 설명서에서 'OUTPUT' 근처에서 사용할 올바른 구문을 확인하십시오. (0) | 2023.06.11 |
VBA Excel "컴파일 오류: 개체 필요" (0) | 2023.06.11 |