2012-01-17 9 views
6

Chciałbym wiedzieć, jak mogę zmniejszyć kąt/bok UIImage jako załączony obraz.Tworzenie wyblakłych narożników/stron na UIImage (nie animacja)

Ustawiłem go jako warstwę i zawierał zaokrąglone rogi, jak poniżej, ale jaki jest kod, który można zanikać lub pochylić?

-(void) viewDidLoad{ 
[super viewDidLoad]; 
CALayer * layer = [image layer]; 
[layer setMasksToBounds:YES]; 
[layer setCornerRadius:10.0]; 

}

Dziękuję bardzo.

enter image description here

+0

jest wymóg krawędzie zanikać do białego lub dla nich znikać na tle/przezroczysty? –

+0

przeniknąć do tła/przezroczysty będzie najlepszy. Dzięki – Clarence

Odpowiedz

6

rozszerzenie powyższej odpowiedzi utworzyć maskę całkowicie nieprzezroczysty centrum i krawędzie powinny łączyć w kierunku przejrzystości następnie użyć następującego kodu, aby zamaskować

- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage { 

    CGImageRef imgRef = [image CGImage]; 
    CGImageRef maskRef = [maskImage CGImage]; 
    CGImageRef actualMask = CGImageMaskCreate(CGImageGetWidth(maskRef), 
               CGImageGetHeight(maskRef), 
               CGImageGetBitsPerComponent(maskRef), 
               CGImageGetBitsPerPixel(maskRef), 
               CGImageGetBytesPerRow(maskRef), 
               CGImageGetDataProvider(maskRef), NULL, false); 
    CGImageRef masked = CGImageCreateWithMask(imgRef, actualMask); 
    return [UIImage imageWithCGImage:masked]; 

} 
+0

Czy mogę stworzyć ten sam rodzaj maski programowo w podróży? W moim przypadku rozmiar UII zmienia się i maska ​​nie może być tego samego rozmiaru za każdym razem! – Nil

3

Jeżeli rozmiar obrazu jest zawsze taki sam (lub proporcje pozostaje taka sama), to prawdopodobnie jesteś najlepszy realizacji tego przy użyciu maski CALayer.

Przed czasem można utworzyć obraz maski (w programie Photoshop lub podobnym narzędziu), który określa, że ​​środkowy kwadrat obrazu powinien być w pełni nieprzejrzysty, a krawędzie powinny mieszać się w stronę przezroczystości.

W kodzie możesz załadować to zdjęcie i utworzyć maskę CALayer, której używasz do maskowania oryginalnego obrazu.

Przykro mi, nie mam żadnego kodu pod ręką, ale może zacząć!