Podczas próby usunięcia notatki w aplikacji Notatki iPhone'a pojawia się UIActionSheet. Arkusz jest półprzezroczysty (ale nie czarny półprzezroczysty). Jak to osiągnąć? Czy jest możliwe, aby tło UIActionSheet miało określony kolor?Rozwój iPhone'a: Jak stworzyć kolorowe lub półprzezroczyste tło dla UIActionSheet?
Odpowiedz
zwykle realizują następujące metody Delegat:
- (void)willPresentActionSheet:(UIActionSheet *)actionSheet
tylko do próbki. W tym przypadku używam rozciągnięte png jako tło:
- (void)willPresentActionSheet:(UIActionSheet *)actionSheet {
UIImage *theImage = [UIImage imageNamed:@"detail_menu_bg.png"];
theImage = [theImage stretchableImageWithLeftCapWidth:32 topCapHeight:32];
CGSize theSize = actionSheet.frame.size;
// draw the background image and replace layer content
UIGraphicsBeginImageContext(theSize);
[theImage drawInRect:CGRectMake(0, 0, theSize.width, theSize.height)];
theImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[[actionSheet layer] setContents:(id)theImage.CGImage];
}
i jest to wynik: alt text http://grab.by/4yF1
Wygląda na czarno (uwaga: za pomocą 2.2.1). Jedynym powodem jest kolor, ponieważ żółty za nim.
Jedną z opcji jest użycie czarnego przezroczystego tła i określenie rozmiaru i szybkości arkusza czynności. Następnie utwórz widok i animuj go w tym samym czasie, gdy pokazujesz arkusz akcji, tuż pod nim, aby nadać mu odcień inny niż kolor naturalnie za arkuszem akcji. Musiałbyś sprawić, aby widok kolorów był również półprzezroczysty, abyś mógł to zobaczyć również za tym.
Nie jestem pewien, czy możesz, ale możesz także spróbować dopasować przezroczystość samego arkusza akcji.
Dostosowanie krycie arkusza akcji wpływa również na przyciski. – Boon
Jeśli spojrzysz na aplikację Notatki, zauważysz, że przyciski nie są w 100% nieprzejrzyste. –
Możesz zdecydowanie ustawić krycie, ustawiając wartość alfa. Interfejs Builder pozwala edytować wartość bezpośrednio, ale w kodzie sądzę byś zrobił:
[[myActionSheet view] setOpaque:NO];
[[myActionSheet view] setAlpha:0.5];
Nie jestem pewien, czy trzeba połączenia setOpaque czy nie - myślę, że jest używany do optymalizacji wydajności, jak iPhone nie będzie próbował renderować niczego ukrytego w nieprzezroczystym widoku.
To nie jest trudne. Można użyć następującego kodu:
CGSize mySize = myActionSheet.bounds.size;
CGRect myRect = CGRectMake(0, 0, mySize.width, mySize.height);
UIImageView *redView = [[[UIImageView alloc] initWithFrame:myRect] autorelease];
[redView setBackgroundColor:[UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:0.5]];
[myActionSheet insertSubview:redView atIndex:0];
tylko upewnij się przedstawić UIActionSheet przed wykonaniem tego czy wielkość przyzwyczajenie być ustawiony. To sprawia, że rodzaj brzydki, ale można zrobić coś takiego:
[myActionSheet showInView:self.view];
if (!redAdded) {
redAdded = YES;
//THE ABOVE CODE GOES HERE
}
Jeśli ograniczysz rozmiar do widoku, nie będziesz musiał wykonywać późniejszej części. Musiał również zastąpić xiy wysokością i szerokością: CGSize mySize = self.view.bounds.size; CGRect myRect = CGRectMake (0, 0, mySize.height, mySize.width); – StuartM
Używanie - (void) willPresentActionSheet: (UIActionSheet *) actionSheet jest lepszym haczykiem ogólnie –
Można również użyć obrazu zamiast koloru, ustawiając UIImage do UIImageView: [actionBackground setImage: [UIImage imageNamed: @ "captainplanet. png "]]; – ninehundredt
można użyć poniższy kod:
actionSheetObj.actionSheetStyle=UIActionSheetStyleBlackOpaque;
lub
actionSheetObj.actionSheetStyle=UIActionSheetStyleBlackTranslucent;
Dzięki, właśnie tego szukałem – GeneCode
actionSheetObj.actionSheetStyle=UIActionSheetStyleBlackTranslucent;
Hej, czy mógłbyś zamieścić link do tego obrazu?Wygląda naprawdę ładnie, dzięki i świetne rozwiązanie do zastąpienia obrazu tła! – JonasG
to nie działa dla mnie !!! – Fay007