Özür dilerim, çocuklar, bu çözümde objektif c'yi kullanmak için, ama Swift'i kullanmayan başkalarına yardımcı olabileceğini düşündüm. Ve ayrıca, bunu oldukça kolayca Swift'e dönüştürebilirsiniz. Vurgulamak istediğim metodoloji daha fazla.
Ayrıca Apple'ın bu çözümü reddedip reddedemeyeceğinden emin değilim, ancak yine de gider.
Apple, iOS7'den itibaren UIAlertView'ın alt sınıflara ayrılmaması gerektiğini bildiriyor. Bu sınıf için görünüm hiyerarşi özeldir ve değiştirilemez gerekir: Bir başka deyişle
https://developer.apple.com/reference/uikit/uialertview?language=objc
, kesinlikle hiçbir etkisi yoktur bir UIAlertView bir UIView ekledi. Ancak, UIProgressView'ı UIAlertView'ın üzerine eklemek, ancak eski uygulama penceresine eklemek de dahil olmak üzere bir çözüme sahibim. UIView superview.center özelliğini kullanarak ve bazı küçük düzenlemeler, istenen etkiler elde edilebilir:
-(void)addProgressBar{
float width = 232;
float height = 5;
self.progbar = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault];
self.progbar.backgroundColor = [UIColor colorWithWhite:0.75f alpha:1.0f];
[self.progbar setFrame:CGRectMake(0,0,width,height)];
[self.progbar setTrackTintColor:[UIColor colorWithWhite:0.75f alpha:1.0f]];
[self.progbar setProgressTintColor:[UIColor colorWithRed:21.0f/255.0f green:126.0f/255.0f blue:251.0f/255.0f alpha:1.0f]];
self.progbar.alpha = 0.0;
[[UIApplication sharedApplication].keyWindow addSubview:self.progbar];
self.progbar.center = self.progbar.superview.center;
[self.progbar setFrame:CGRectMake(self.progbar.frame.origin.x,self.progbar.frame.origin.y+10,self.progbar.frame.size.width,self.progbar.frame.size.height)];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:2.0];
[self.progbar setAlpha:1.0];
[UIView commitAnimations];
}
ben UIAlertView tamamen birinci görünmesine izin vermek için, fade ekleyebilir. Sonra doğru anlarda, UIProgressView görevden başka temsilci işlevleri ekleyin:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if(self.alert.cancelButtonIndex == buttonIndex){
[self.progbar removeFromSuperview];
}
}
- (void)alertViewCancel:(UIAlertView *)alertView{
[self.progbar removeFromSuperview];
}
nasıl ilerleme güncellerim? –
"progressView.progress" öğesini basitçe değiştirebilirsiniz. "Var progressView: UIProgressView?" Ifadesini tanımlamak daha net olabilir. dışında (tamamlanma bloğunda değil) isteğe bağlı olarak ve sonra "progressView? .progress = 0.123" olarak ayarlayın. – coyer
neden sabit kullanıyorsunuz? Bu sadece iPhone ve iPad'de farklı görsel sonuçlar alır. Aslında, sadece iPhone portre iyi görünüyor çünkü manzarada ilerleme görüşü değişti – Ricardo