2013-04-29 10 views
15

Najprawdopodobniej już to zauważyłeś, stało się ono niezwykle popularne w eleganckich aplikacjach takich jak ScoutMob. Próbuję wdrożyć przejrzysty widok 60% na uruchomienie, który obejmie mój ekran główny, wyjaśniając, jak korzystać z funkcji ekranu głównego i znika z dotknięcia.Jak utworzyć półprzezroczystą warstwę widoku powyżej bieżącego widoku?

Mam cała aplikacja zakończone (to używając .xib, ponieważ jej od A rok temu, ale nie krępuj się wyjaśnić w formacie serii ujęć, a także, ponieważ będę prawdopodobnie ponownie użyć tej funkcji w innych 5.0+ aplikacji iOS.)

Nie mam problemu z robieniem pojedynczych widoków, ale chwilowe nałożenie jednego na drugie jest czymś, czego nie zorientowałem się intuicyjnie. Będę kontynuował badania i przedstawię pomocne wskazówki, które mogą znaleźć na wypadek, gdyby inni ludzie robili to samo.

+1

[Powiązane pytanie] (http://stackoverflow.com/questions/849458/transparent-modal-view-on-navigation-controller/859215#859215), nieco przestarzałe chociażby – user

Odpowiedz

43
// get your window screen size 
CGRect screenRect = [[UIScreen mainScreen] bounds]; 
//create a new view with the same size 
UIView* coverView = [[UIView alloc] initWithFrame:screenRect]; 
// change the background color to black and the opacity to 0.6 
coverView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.6]; 
// add this new view to your main view 
[self.view addSubview:coverView]; 

gdy skończysz z nim, można go usunąć: Wersja

[coverView removeFromSuperview]; 

Swift3:

// get your window screen size 
let screenRect = UIScreen.main.bounds 
//create a new view with the same size 
let coverView = UIView(frame: screenRect) 
// change the background color to black and the opacity to 0.6 
coverView.backgroundColor = UIColor.black.withAlphaComponent(0.6)   
// add this new view to your main view 
self.view.addSubview(coverView) 

aby go usunąć:

coverView.removeFromSuperview() 
1

Tylko mechanizm, który domyśla się, jeśli jest to pierwsze uruchomienie aplikacji, a następnie mówi głównego kontrolera widoku, aby dodać (prawdopodobnie obraz) pogląd na szczycie aktualnego widoku z 0,6 alfa

if (figureOutIfIsFirstLaunch) 
{ 
    UIImageView *myOverlay = [...]; 
    myOverlay.frame = self.view.bounds; 
    myOverlay.alpha = 0.6; 
    [self.view addSubview:myOverlay]; 
} 
+0

Czy byłyby jakiekolwiek konsekwencje dla wprowadzenia to w moim applicationDelegate 'application: didFinishLaunchingWithOptions:' zamiast kontrolera zawierającego zawierającego? – user

4

Można to łatwo osiągnąć za pomocą UITextView i UIButton. Wystarczy umieścić UITextView na ekranie z treścią, którą chcesz wyświetlić, dzięki czemu jest on pełny rozmiar ramki ekranu, a także zmienić kolor tła na czarnym tle z tła alfa .6

[UIColor colorWithRed: 0 withGreen: 0 withBlue: 0 withAlpha: .6]; 

następnie umieść przycisk jako widok z góry u góry, tworząc pełną klatkę ekranu i ustawiając wartość alfa na 0. Ustaw akcję przycisku, aby ukryć widok tekstowy i przycisk.

Przykład:

UITextView* textview = [[UITextView alloc] initWithFrame:self.view.frame]; 
[textview setText: @"Text here"]; 
[textview setBackgroundColor: [UIColor colorWithRed: 0 withGreen: 0 withBlue: 0 withAlpha: .6]]; 
[textview setTextColor: [UIColor whiteColor]]; 
[self.view addSubview: textview]; 

UIButton* btn = [[UIButton alloc] initWithFrame:self.view.frame]; 
[btn setAlpha:0]; 
[btn addTarget:self action:@selector(method) forEvent:UIControlEventTouchUpInside]; 
[self.view addSubview: btn]; 

Możesz sprawdzić addTarget: Metoda; Nie jestem pewien, czy są to poprawne parametry z mojej głowy.

1
  1. tworzyć UIView, nazwa to co chcesz (dimBackgroundUIView), a następnie ustawić backgroundColor jako czarne i ustawić alfa do 0,1 lub 0,2 lub ....
  2. dodać te 2 linie kodu, kiedy trzeba przyciemnić background: [self.view addSubview:dimBackgroundUIView]; [self addConstraintsForDimView];
  3. i dodać te 2 linie kodu, gdy chcemy usunąć ściemnienie background: if(dimBackgroundUIView) [dimBackgroundUIView removeFromSuperview];
  4. nie zapomniał dodać ograniczenia (układy) dla dimBackgroundUIView.

sprawdzić to:iOS Dim background when a view is shown

i nie zapomnij przeczytać notatkę poniżej kod, aby zrozumieć, co trzeba zrobić.

+0

Podczas gdy ten link może odpowiedzieć na pytanie, lepiej umieścić w nim istotne części odpowiedzi i podać link do odsyłacza. Odpowiedzi dotyczące linków mogą stać się nieprawidłowe, jeśli strona z linkami się zmieni. - [Z recenzji] (/ recenzja/niskiej jakości-posts/10848678) –

+1

ok, poprawiłem moją odpowiedź –