Rozglądałem się wszędzie, ale nie mogę znaleźć sposobu, aby to zrobić. Potrzebuję utworzyć czarną maskę UII o określonej szerokości i wysokości (zmiana szerokości i wysokości, więc nie mogę po prostu utworzyć czarnego pola, a następnie załadować go do UII). Czy jest jakiś sposób, aby zrobić CGRect, a następnie przekonwertować go do UIImage? Czy jest jakiś inny sposób na zrobienie prostego czarnego pudełka?Jak utworzyć czarną UIImage?
Odpowiedz
W zależności od sytuacji prawdopodobnie można użyć zestawu UIView
z zestawem backgroundColor
na [UIColor blackColor]
. Ponadto, jeśli obraz jest mocno zabarwiony, nie potrzebujesz obrazu, który w rzeczywistości jest wymiarami, na których chcesz go wyświetlać; możesz przeskalować obraz w pikselach 1x1 w celu wypełnienia wymaganej przestrzeni (np. ustawiając contentMode
z UIImageView
na UIViewContentModeScaleToFill
).
Mimo, że może to być pouczające, aby zobaczyć, jak faktycznie wygenerować taki obraz:
CGSize imageSize = CGSizeMake(64, 64);
UIColor *fillColor = [UIColor blackColor];
UIGraphicsBeginImageContextWithOptions(imageSize, YES, 0);
CGContextRef context = UIGraphicsGetCurrentContext();
[fillColor setFill];
CGContextFillRect(context, CGRectMake(0, 0, imageSize.width, imageSize.height));
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIGraphicsBeginImageContextWithOptions(CGSizeMake(w,h), NO, 0);
UIBezierPath* p =
[UIBezierPath bezierPathWithRect:CGRectMake(0,0,w,h)];
[[UIColor blackColor] setFill];
[p fill];
UIImage* im = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Teraz im
jest obraz.
Ten kod pochodzi prawie niezmieniony od tej części mojej książki: http://www.apeth.com/iOSBook/ch15.html#_graphics_contexts
Solidne. Jedyne co zmienię to to, że 'opaque' może być ustawione na' YES', ponieważ przypuszczalnie rysujemy nieprzezroczysty kolor w kontekście. – warrenm
Właściwie jeśli ustawisz 'opaque' na YES, nie musisz nawet narysować prostokąta wypełnionego czarnym kolorem! :) Nieprzezroczysty kontekst graficzny * jest * czarny. – matt
Dobry połów. Zastanawiam się, czy jest to udokumentowane gdziekolwiek lub czy jest to tylko dziwactwo realizacji. – warrenm
Swift 3:
func uiImage(from color:UIColor?, size:CGSize) -> UIImage? {
UIGraphicsBeginImageContextWithOptions(size, true, 0)
defer {
UIGraphicsEndImageContext()
}
let context = UIGraphicsGetCurrentContext()
color?.setFill()
context?.fill(CGRect.init(x: 0, y: 0, width: size.width, height: size.height))
return UIGraphicsGetImageFromCurrentImageContext()
}
Oto przykład, który tworzy czarną UIImage który jest 1920x1080, tworząc go od CGImage utworzonego z CIImage:
let frame = CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: 1920, height: 1080))
let cgImage = CIContext().createCGImage(CIImage(color: .black()), from: frame)!
let uiImage = UIImage(cgImage: cgImage)
- 1. Jak mogę wziąć UIImage i dać mu czarną granicę?
- 2. Jak utworzyć czarną listę IP w Symfony2?
- 3. Jak utworzyć UIImage z UIBezierPath
- 4. Dlaczego ten kod wyświetlający GLView zwraca pustą/czarną UIImage?
- 5. Jak utworzyć UIImage z przezroczystym tłem
- 6. Jak utworzyć UIImage z bieżącego kontekstu graficznego?
- 7. presentViewController pokazuje czarną stronę
- 8. iPhone SDK - Jak narysować UIImage na inną UIImage?
- 9. Jak usunąć czarną listę dla rozszerzenia?
- 10. Jak usunąć czarną część z obrazu?
- 11. Jak usunąć dodatkową czarną linię pod UISearchBarem?
- 12. Jak skopiować UIImage?
- 13. Jak ustawić ramkę UIImage
- 14. Jak autocropować UIImage?
- 15. Utwórz UIImage z MKMapView
- 16. Dodaj UIImage na wierzchu innej UIImage
- 17. jak przekonwertować CVImageBufferRef na UIImage
- 18. Jak uzyskać rozmiar (KB) UIImage
- 19. Jak serializować UIImage do JSON?
- 20. Jak zapisać UIImage do pliku?
- 21. Jak przekonwertować UIImage do CVPixelBuffer
- 22. Jak renderować SKNode do UIImage
- 23. maskowanie UIImage
- 24. Niestandardowy tytuł AlertDialog ma czarną ramkę
- 25. Dlaczego firebase push_token zwraca na czarną listę?
- 26. Stosowanie gradientu do UIImage Smoothly
- 27. iphone - pojedynczy UIImage wielu UIImageView?
- 28. UIImage i resizableImageWithCapInsets Swift
- 29. Uzyskaj kolor piksela UIImage
- 30. Konwersja UIImage w tekstury
Jeśli wystarczy czarną skrzynkę, utwórz 'UIView' użyciem' CGRect' dla 'frame' ustaw' backgroundColor' do '[UIColor blackColor]', a następnie dodać to nowe "UIView" do istniejącego widoku (np. 'self.view', jeśli robi to z kontrolera), używając' addSubview'. – Rob
Ściśle związane: [Dla pokosów kolorów, które są tańsze, UIView lub UIImage?] (Http://stackoverflow.com/q/13885588) Zobacz też: [Nakładanie UIImage z kolorem] (http: // stackoverflow. com/q/845278), która ma [odpowiedź] (http://stackoverflow.com/a/10620128/603977), która mówi ci, jak zrobić to, o co prosisz. –