#ios #swift #uiview #uibutton
#iOS #быстрый #uiview #уибуттон
Вопрос:
У меня есть UIButton с изображением (по умолчанию ImageView для UIButton).
После создания и компоновки я устанавливаю:
button.imageView?.alpha = 0.3
и все работает.
Но после нажатия кнопки изображение снова становится полностью видимым, а значение aplha изменяется.
Горячий, чтобы предотвратить это, иметь то же значение aplha после нажатия кнопки?
Ответ №1:
Я предполагаю, что UIButton может изменять свойства своих вложенных представлений по умолчанию, когда кнопка меняет свое состояние.
Я бы предложил два варианта:
- Используйте подкласс UIButton и переопределите
isHighligted
свойство:
class MyButton: UIButton {
override var isHighlighted: Bool {
didSet {
imageView?.alpha = 0.3
}
}
}
- Или внедрите пользовательский UIControl вместо UIButton. Вы можете добавлять и использовать свои пользовательские вложенные представления и определять, как вы хотите, чтобы они вели себя. Также вы можете использовать те же целевые действия UIControl, что и у UIButton (.touchUpInside, .touchDown и т.д.)
class MyButton: UIControl {
let titleLabel = UILabel()
let imageView = UIImageView()
...
}
Ответ №2:
Попробуйте это, кнопка удаления / комментария.ImageView?.альфа = 0,3 альфа:
let button: UIButton = {
let b = UIButton(type: .system)
b.imageView?.image = yourImage
// b.imageView?.alpha = 0.3
b.addTarget(self, action: #selector(yourAction), for: .touchUpInside)
return b
}()
теперь в viewDidLoad:
override func viewDidLoad() {
super.viewDidLoad()
changeAlpha()
}
var alphaControl = 0
@objc func changeAlpha() {
if alphaControl == 0 {
button.imageView?.alpha = 0.3
alphaControl = 1
} else {
button.imageView?.alpha = 1 // or all alpha that do you want
alphaControl = 0
}
}
после этого вы можете вызвать функцию changeAlpha() во всех ваших действиях с кнопками.
Вы можете добавить в нее анимацию и добавить что-то еще, если или сделать переключатель
Комментарии:
1. Это не решение, я уже пробовал, его нужно как-то изменить после вызова функции onClick.
2. @JanekWojciechowski пытается удалить / прокомментировать первую кнопку.ImageView? .атрибут alpha = 0.3 и вызовите функцию changeAlpha() в viewDidLoad, естественно, удалите вызов функции goToYourButtonAction()
3. @JanekWojciechowski Я отредактировал свой пример ответа, посмотрите и попробуйте…