【Swift】UIButton을 setTitle했을 때의 깜박임을 없애
소개
다음과 같이 UIButton을 setTitle했을 때 일순간 깜박입니다. 이것을 원활하게 바꾸는 방법을 소개합니다.
깜박임 있음
깜박임 없음
구현
우선, 깜박임을 없애기 전의 코드가 이쪽입니다.
enum ButtonType {
case a
case b
var text: String {
switch self {
case .a: return "AAAAA"
case .b: return "BBBBB"
}
}
mutating func change() {
switch self {
case .a: self = .b
case .b: self = .a
}
}
}
final class ViewController: UIViewController {
@IBOutlet private weak var button: UIButton!
private var buttonType: ButtonType = .b
@IBAction private func buttonDidTapped(_ sender: Any) {
button.setTitle(buttonType.text, for: .normal)
buttonType.change()
}
}
그리고 깜박임을 없애는 코드가 여기입니다.
enum ButtonType {
case a
case b
var text: String {
switch self {
case .a: return "AAAAA"
case .b: return "BBBBB"
}
}
mutating func change() {
switch self {
case .a: self = .b
case .b: self = .a
}
}
}
final class ViewController: UIViewController {
@IBOutlet private weak var button: UIButton!
private var buttonType: ButtonType = .b
@IBAction private func buttonDidTapped(_ sender: Any) {
UIView.setAnimationsEnabled(false)
button.setTitle(buttonType.text, for: .normal)
buttonType.change()
button.layoutIfNeeded()
UIView.setAnimationsEnabled(true)
}
}
포인트는 이하군요.
버튼의 제목을 변경하기 전에 애니메이션을 멈추고 깜박임을 제거합니다. 그리고, 버튼에 대해서 layoutIfNeeded
를 해 주는 것으로, 깜박임이 없어집니다. (이것을 쓰지 않으면 깜박입니다) 그리고 마지막으로 애니메이션을 다시 시작합니다.
UIView.setAnimationsEnabled(false)
button.setTitle(buttonType.text, for: .normal)
buttonType.change()
button.layoutIfNeeded()
UIView.setAnimationsEnabled(true)
결론
끝입니다.
Reference
이 문제에 관하여(【Swift】UIButton을 setTitle했을 때의 깜박임을 없애), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/REON/items/7031952c2c1acdfa7101
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
우선, 깜박임을 없애기 전의 코드가 이쪽입니다.
enum ButtonType {
case a
case b
var text: String {
switch self {
case .a: return "AAAAA"
case .b: return "BBBBB"
}
}
mutating func change() {
switch self {
case .a: self = .b
case .b: self = .a
}
}
}
final class ViewController: UIViewController {
@IBOutlet private weak var button: UIButton!
private var buttonType: ButtonType = .b
@IBAction private func buttonDidTapped(_ sender: Any) {
button.setTitle(buttonType.text, for: .normal)
buttonType.change()
}
}
그리고 깜박임을 없애는 코드가 여기입니다.
enum ButtonType {
case a
case b
var text: String {
switch self {
case .a: return "AAAAA"
case .b: return "BBBBB"
}
}
mutating func change() {
switch self {
case .a: self = .b
case .b: self = .a
}
}
}
final class ViewController: UIViewController {
@IBOutlet private weak var button: UIButton!
private var buttonType: ButtonType = .b
@IBAction private func buttonDidTapped(_ sender: Any) {
UIView.setAnimationsEnabled(false)
button.setTitle(buttonType.text, for: .normal)
buttonType.change()
button.layoutIfNeeded()
UIView.setAnimationsEnabled(true)
}
}
포인트는 이하군요.
버튼의 제목을 변경하기 전에 애니메이션을 멈추고 깜박임을 제거합니다. 그리고, 버튼에 대해서
layoutIfNeeded
를 해 주는 것으로, 깜박임이 없어집니다. (이것을 쓰지 않으면 깜박입니다) 그리고 마지막으로 애니메이션을 다시 시작합니다.UIView.setAnimationsEnabled(false)
button.setTitle(buttonType.text, for: .normal)
buttonType.change()
button.layoutIfNeeded()
UIView.setAnimationsEnabled(true)
결론
끝입니다.
Reference
이 문제에 관하여(【Swift】UIButton을 setTitle했을 때의 깜박임을 없애), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/REON/items/7031952c2c1acdfa7101
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【Swift】UIButton을 setTitle했을 때의 깜박임을 없애), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/REON/items/7031952c2c1acdfa7101텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)