Mi sono guardato in giro dappertutto, ma non riesco a trovare un modo per farlo. Ho bisogno di creare una UII nera di una certa larghezza e altezza (la larghezza e l'altezza cambiano, quindi non posso semplicemente creare una scatola nera e poi caricarla in una UIImmagine). C'è un modo per creare un CGRect e poi convertirlo in un UIImage? O c'è un altro modo per creare una semplice scatola nera?Come creare un UIImage nero?
risposta
A seconda della situazione, è probabile che sia possibile utilizzare semplicemente un UIView
con il backgroundColor
impostato su [UIColor blackColor]
. Inoltre, se l'immagine è a tinta unita, non è necessaria un'immagine che sia in realtà le dimensioni in cui desideri visualizzarla; puoi semplicemente ridimensionare un'immagine di 1x1 pixel per riempire lo spazio necessario (ad esempio impostando contentMode
di UIImageView
in UIViewContentModeScaleToFill
).
Detto questo, può essere istruttivo vedere come generare in realtà una tale immagine:
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();
Ora im
è l'immagine.
Che il codice proviene quasi invariato da questa sezione del mio libro: http://www.apeth.com/iOSBook/ch15.html#_graphics_contexts
Solido. L'unica cosa che cambierei è che 'opaque' può essere impostato su' YES' dal momento che stiamo presumibilmente disegnando un colore opaco nel contesto. – warrenm
In realtà se si imposta 'opaque' su SÌ, penso che non sia nemmeno necessario disegnare il rettangolo nero pieno! :) Un contesto grafico opaco * è * nero. – matt
Buona presa. Mi chiedo se questo è documentato ovunque o se si tratta solo di un capriccio di implementazione. – 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()
}
Ecco un esempio che crea un UIImage nero che è 1920x1080 con la creazione da un CGImage creato da un 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. Come creare un UIImage con UIBezierPath
- 2. Come posso creare Pdf da UIImage?
- 3. Come creare un UIImage dal contesto grafico corrente?
- 4. Come copiare un UIImage?
- 5. Creare un UIImage con un URL in iOS
- 6. Come si autocorre un UIImage?
- 7. Come creare dinamicamente una UIImage 1x1 colorata su iPhone?
- 8. Perché UINavigationBar diventa nero?
- 9. Come posso convertire FBProfilePictureView in un UIImage?
- 10. come convertire un CVImageBufferRef in UIImage
- 11. Come scalare un UIImage senza lisciare nulla?
- 12. Cattura UIView come UIImage
- 13. iPhone SDK - Come disegnare un UIImage su un altro UIImmagine?
- 14. crea un UIImage da due UIImageView
- 15. Albero rosso-nero - Nero Limite di altezza
- 16. È possibile animare un UIImage?
- 17. Creazione di una maschera con CGImageMaskCreate è tutto nero (iphone)
- 18. Come creare UIImage vuoto o vuoto o CGImage e manipolare i pixel su di esso (Xcode)?
- 19. Come disegnare un UIImage o direttamente in -drawRect :?
- 20. UIImage metadati
- 21. Come ottenere l'URL da UIImage
- 22. Avendo problemi a creare UIImage da CIImage in iOS5
- 23. come inserire UIImage in UITextView
- 24. Creare un UIImage rendendo UIWebView su un thread in background - iPhone
- 25. Caricamento UIImage da UIImagePickerControllerReferenceURL
- 26. Come ottenere UIImage da EAGLView?
- 27. Come serializzare UIImage su JSON?
- 28. Come posso memorizzare un UIImage in un NSDictionary?
- 29. Come si salva un UIImage in un file?
- 30. Nome tipo sconosciuto 'UIImage'
Se avete solo bisogno di una scatola nera, creare un 'UIView' di utilizzare il' CGRect' per il 'trama fissa, impostare il' backgroundColor' a '[UIColor blackcolor]', e quindi aggiungerequesto nuovo 'UIView' alla tua vista esistente (ad es. 'self.view' se si fa questo da un controller), usando' addSubview'. – Rob
Strettamente correlato: [per strisce di colore, che è più economico, UIView o UIImage?] (Http://stackoverflow.com/q/13885588) Vedi anche: [Sovrapposizione di una UIImmagine con un colore] (http: // StackOverflow. it/q/845278), che ha [una risposta] (http://stackoverflow.com/a/10620128/603977) che ti dice come fare ciò che stai chiedendo. –