원하는 항목 : Viewcontroller를 호출 한 후에 배경을 제외하고이 ViewController의 모든 요소를 페이드하고 싶습니다. 배경은 있어야합니다.알파를 다시 1.0으로 설정 한 후에 버튼/레이블/아무 것도 다시 나타나지 않습니다.
어떤 문제가 생깁니 까? 내 코드에서 볼 수 있듯이, 어떤 것이 희미 해지면 먼저 제거해야합니다. 제거 부분은 잘하고 있습니다. 그러나 다시 나타나기를 원할 때 아무 일도 일어나지 않습니다. 인쇄 기능을 사용하여 임의의 레이블의 알파를 볼 때 1.0으로 설정됩니다. 내가 뭘 잘못하고 있는지 알 수 없다.
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
Removeeverything()
Fadein()
}
func Removeeverything() {
for view in self.view.subviews as [UIView] {
if let btn = view as? UIButton {
UIView.animateWithDuration(0.0, delay: 0.0, options: UIViewAnimationOptions.CurveEaseOut, animations: {
btn.alpha = 0.0
}, completion: nil)
}
}
for view in self.view.subviews as [UIView] {
if let btn = view as? UILabel {
UIView.animateWithDuration(0.0, delay: 0.0, options: UIViewAnimationOptions.CurveEaseOut, animations: {
btn.alpha = 0.0
}, completion: nil)
}
}
for view in self.view.subviews as [UIView] {
if let btn = view as? UIImageView {
UIView.animateWithDuration(0.0, delay: 0.0, options: UIViewAnimationOptions.CurveEaseOut, animations: {
btn.alpha = 0.0
}, completion: nil)
}
}
}
func Fadein() {
Backgrond.alpha = 1.0
for view in self.view.subviews as [UIView] {
if let btn = view as? UIButton {
UIView.animateWithDuration(1.0, delay: 0.0, options: UIViewAnimationOptions.CurveEaseIn, animations: {
btn.alpha = 1.0
}, completion: nil)
}
}
for view in self.view.subviews as [UIView] {
if let btn = view as? UILabel {
UIView.animateWithDuration(1.0, delay: 0.0, options: UIViewAnimationOptions.CurveEaseIn, animations: {
btn.alpha = 1.0
}, completion: nil)
}
}
for view in self.view.subviews as [UIView] {
if let btn = view as? UIImageView {
UIView.animateWithDuration(0.7, delay: 0.0, options: UIViewAnimationOptions.CurveEaseIn, animations: {
btn.alpha = 1.0
}, completion: nil)
}
}
}
이렇게하면 코드를 정리하는 데 도움이됩니다. 감사합니다. 단, 초가 끝난 후에는 사라집니다. (여기서 초는 1.0과 0.7입니다.) 나는 10 초를 테스트했습니다. 페이드 인되어 10 초 이내에 자동으로 페이드 아웃됩니다. 우리는 잘못된 애니메이션을 사용하고 있습니까? – Nahaku
지금 작동합니다. 일부 이미지가 작동하지 않는다고 생각합니다 ... 정말 고마워요! – Nahaku