UIButton: Ustaw obraz dla stanu zaznaczonego-podświetlonego
Ustawiam obrazek dla przycisku stan normalny, podświetlony i zaznaczony, ale gdy przycisk w stanie zaznaczonym i nacisnę/podświetl go, nie widziałem mojego podświetlonego obrazu, ale tylko szare zdjęcie. Czy można ustawić obrazek dla stanu podświetlonego po wybraniu przycisku?
Mój kod:
[button setImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"pressed.png"] forState:UIControlStateHighlighted];
[button setImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateSelected];
Kiedy robię:
[button setSelected:YES];
I naciśnij przycisk, " wciśnięty.obraz png " nie jest zaznaczony.
15 answers
Znalazłem rozwiązanie: trzeba dodać linię dodawania
[button setImage:[UIImage imageNamed:@"pressed.png"] forState:UIControlStateSelected | UIControlStateHighlighted];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-18 20:41:51
Możesz to zrobić w Interface Builder.
Wybierz UIButton
, które chcesz ustawić w IB
, a następnie przejdź do attributes inspector
.
W zrzutach ekranu, używam niestandardowego typu przycisku, ale to nie ma znaczenia .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-30 16:12:11
Swift 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])
Aby ustawić obraz tła możemy użyć setBackgroundImage(_:for:)
Swift 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])
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-19 11:41:28
Myślę, że większość plakatów tutaj zupełnie nie ma sensu. Miałem ten sam problem. Pierwotne pytanie dotyczyło stanu podświetlenia wybranego przycisku (łączącego oba stany), który nie może być ustawiony w IB i wraca do stanu domyślnego z pewnym zaciemnieniem. Tylko działające rozwiązanie jako jeden post wymieniony:
[button setImage:[UIImage imageNamed:@"pressed.png"] forState:UIControlStateSelected | UIControlStateHighlighted];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-08 07:55:18
Jeśli masz dobry powód, aby to zrobić, to załatwi sprawę
Dodaj te cele:
[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];
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-08 09:07:25
W Swift 3.x, można ustawić podświetlony obraz Po wybraniu przycisku w następujący sposób:
// 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))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-28 21:40:06
W swift możesz zrobić:
button.setImage(UIImage(named: "selected"),
forState: UIControlState.selected.union(.highlighted))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-28 21:40:37
Popraw mnie, jeśli się mylę. Robiąc
[button setSelected:YES];
Wyraźnie zmieniasz stan zaznaczonych przycisków. Więc oczywiście przez kod, który podałeś obraz będzie dla wybranego stanu w Twoim przypadku zaznaczony.png
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-08 09:03:06
Jeśli ktoś się zastanawia jak to działa w Swifcie, oto moje rozwiązanie:
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)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-24 12:24:12
Swift 3 +
button.setImage(UIImage(named: "selected_image"), for: [.selected, .highlighted])
Lub
button.setImage(UIImage(named: "selected_image"), for: UIControlState.selected.union(.highlighted))
Oznacza to, że przycisk obecny w stanie selected
, następnie go dotykasz, pokazujesz stan highlight
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-08 03:54:14
Miałem problem z ustawieniem imageView.highlighted = NO;
(ustawienie tak działało poprawnie i obraz zmienił się na podświetlony).
The solution was calling [imageView setHighlighted:NO];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-06 12:12:45
Skąd chcesz zadzwonić
[button addTarget:self action:@selector(test:) forControlEvents:UIControlEventTouchUpInside];
Metoda:
-(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;
}
}
Kredyt powyżej dla Jorge ale poprawiłem go trochę dając pełne rozwiązanie pracy
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-02 09:49:43
Xamarin C #
Robi bit lub nie działa z jakiegoś powodu
button.SetImage(new UIImage("ImageNormal"), UIControlState.Normal);
button.SetImage(new UIImage("ImagePressed"), UIControlState.Selected | UIControlState.Highlighted | UIControlState.Focused);
Następujące prace
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);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-12-19 10:59:36
Jeśli potrzebujesz podświetlonego odcienia, który system operacyjny domyślnie zapewnia po dotknięciu i przytrzymaniu niestandardowego przycisku dla wybranego stanu, użyj tej podklasy UIButton. Napisane w Swift 5:
import Foundation
import UIKit
class HighlightOnSelectCustomButton: UIButton {
override var isHighlighted: Bool {
didSet {
if (self.isSelected != isHighlighted) {
self.isHighlighted = self.isSelected
}
}
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-09-18 06:54:39
W moim przypadku, muszę zmienić UIButton.Wpisz od .custom
do .system
I:
button.setImage(UIImage(named: "unchecked"), for: .normal)
button.setImage(UIImage(named: "checked"), for: [.selected, .highlighted])
Podczas obsługi stukania:
button.isSelected = !button.isSelected
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-10-06 09:18:26