Uygulamamdaki kök görünüm denetleyicisini değiştirmeye çalışıyorum. Görüntü denetleyicileri değiştirdikten sonra, 2. denetleyici için gereken verileri hemen yüklüyorum. Veri yüklenirken, bir yükleyici (MBProgressHUD) gösteriyorum. Bu görünüm denetleyicileri takas için benim fonksiyonudur: bu iyiUIView.transitionWithView, yükleyicinin düzenini bozuyor
class ViewUtils {
class func animateRootViewController(duration: NSTimeInterval, changeToViewController: UIViewController) {
let window = UIApplication.sharedApplication().delegate?.window?
if window == nil {
return
}
UIView.transitionWithView(window!,
duration: duration,
options: UIViewAnimationOptions.TransitionFlipFromLeft | UIViewAnimationOptions.AllowAnimatedContent,
animations: {
window!.rootViewController = changeToViewController
},
completion: nil
)
}
}
Tüm ama bir şey - tamamen yükleyici kırar. Olanlar hakkında bir hayal kurarım: Bu, döndürürken 2. görünüm denetleyicisidir. Döndürme tamamlandıktan sonra yükleyici, hem eğiricinin hem de metnin, yuvarlatılmış dikdörtgendeki doğru konuma doğru sadece ince bir şekilde görünür.
Gerçekten bunun neden olduğunu anlamıyorum, biri bana açıklar mı lütfen? Bunu engellemenin bir yolu var mı?
Ben yükleyici göstermek 2 görünümü denetleyicisi kodu: herhangi fikirler için
class HUD {
private var hudBG: UIView!
private var view: UIView!
private(set) var isShown = false
init(containingView: UIView) {
view = containingView
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func show() {
if !isShown {
if(hudBG == nil) {
hudBG = UIView(frame: CGRectMake(0, 0, view.bounds.width, view.bounds.height))
hudBG.backgroundColor = UIColor(white: 0, alpha: 0.4)
}
view.addSubview(hudBG)
let hud = MBProgressHUD.showHUDAddedTo(view, animated: true)
hud.mode = MBProgressHUDModeIndeterminate
hud.labelText = "Cargando"
hudBG.alpha = 0
UIView.animateWithDuration(0.3, animations: {() -> Void in
self.hudBG.alpha = 1
})
isShown = true
}
}
func hide() {
if isShown {
UIView.animateWithDuration(0.3, animations: {
() -> Void in
self.hudBG.alpha = 0
}, completion: {
(b) -> Void in
self.hudBG.removeFromSuperview()
})
MBProgressHUD.hideHUDForView(view, animated: true)
isShown = false
}
}
}
Çok teşekkürler:
override func viewDidLoad() {
super.viewDidLoad()
hud = HUD(containingView: view)
hud.show()
createBackground()
}
Ve hud sınıfı!
Görünümün viewDidLoad'da düzgün şekilde başlatıldığını düşünmüyor musunuz? Zaten doğru sınırlara ve doğru çerçeveye (örneğin, bir iP4/S için (0.0.0.0,320.0.480.0)) sahiptir. Görüntü denetleyicinin dönüşünü delirtir - geçiş olmadan sorun olmaz. – Fygo
Görünümün doğru kareye sahip olduğunu nereden biliyorsunuz? ViewDidLoad'a bir giriş yaptın mı? – pteofil
Ayrıca, bahsettiğimiz manzara da önemli olabilir. Bu "görünüm" nedir, denetleyicinin ana görünümüne veya alt görünümlerinden birine hud eklediğiniz nedir? Ana görünüm ise, bence self.view ile kullanmalısınız. – pteofil