2012-08-09 15 views
5

Bir görüntüleme kontrolörü tam ekranını yarı şeffaf olarak sunmak istiyorum, böylece onun altındaki görünümü hala görüyorum. Aşağıdaki kod yeni görüntü denetleyicisini sunar, ancak geçerli olanı değiştirir. Orijinal görüntü denetleyicisini görünür halde tutmanın en iyi yolu nedir? Yeni görüntü denetleyicinin görünümü yarı saydam siyah arka plana sahip olacak.iOS - saydamlıklı presentViewController

NewViewController* newVC = [[NSClassFromString(@"NewViewController") alloc] initWithNibName:deviceNib bundle:nil]; 
newVC.modalPresentationStyle = UIModalPresentationFullScreen; 
newVC.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 


[self presentViewController:newVC animated:YES completion:NULL]; 

cevap

6

Yarı saydam bir görünüm sunun, bir görünüm denetleyicisi değil.

mySemiTransparentView tam ekran görünümünüzdür. Sen yer haline canlandırabilirsiniz:

[UIView beginAnimations:@"fadeIn" context:nil]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn]; 
[UIView setAnimationDuration:0.4f]; 
mySemiTransparentView.alpha = 0.5f; 
[UIView commitAnimations]; 
+0

Alt görünümünde, ancak görüntü denetleyicisini kullanmak istiyorum. – soleil

+0

UIViewController'ınızı yine de atama/init aracılığıyla gerçekleştirebilirsiniz, daha sonra mySemiTransparentView yalnızca ViewController.view'iniz olabilir – CSmith

+2

Yarı saydam görünümünüzdeki herşeyi .5 alfa (düğmeler ve benzeri) olmak istemediğiniz sürece, görünüm, çünkü tüm alt bileşenleri için cascades. .5 alfa olan tüm ekranı kaplayan ve ardından düğmelerinizi ve buna benzerleri içeren bir arka plan görünümü oluşturmadan daha iyi olursunuz. –

2
Aşağıdaki şekilde yarı saydam modal kontrolörü sunabilirim

: Eğer kendini sabit UIModalPresentationCurrentContext ayarlamak zorunda burada

NewViewController* newVC = [[NSClassFromString(@"NewViewController") alloc] initWithNibName:deviceNib bundle:nil]; 

self.modalPresentationStyle = UIModalPresentationCurrentContext; 
newVC.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 

[self presentViewController:newVC animated:YES completion:NULL]; 

Bildirimi .modalPresentationStyle, değil newVC .modalPresentationStyle

Ayrıca, kullandığınız zaman UIModalTransitionStyleCrossDissolvenewVC.view alfa geçişi sırasında geçersiz kılar, böylece yarı şeffaf bir arka plan isterseniz başka UIView net newVC.view 'ın backgroundColor saklayıp yalnızca eklemeniz gerekir Yarı saydam backgroundColor

+0

'self.modalPresentationStyle = UIModalPresentationCurrentContext;' veya 'newVC. Ayrıca, cevabınızın ikinci kısmı için modalPresentationStyle = UIModalPresentationCustom'and + 1. Teşekkürler –