seguridad - Cargar imagen del paquete con IOS
transferir mensajes de whatsapp de android a iphone (10)
Si eso no funciona, prueba
[UIImage imageNamed:@"yourbundlefile.bundle/imageInBundle.png"];
Mejor
Agregué a mi proyecto una carpeta .bundle llena de algunas imágenes. ¿Es correcto hacer referencia a esta imagen escribiendo directamente algo así como?
[UIImage imageNamed:@"imageInBundle.png"];
¿Cuál es el mejor método para acceder y usar estas imágenes?
Eso es correcto, imageNamed:
buscará en su paquete principal. Las imágenes en su proyecto, incluso si están en diferentes grupos en su Project Navigator estarán en su paquete principal y se puede acceder directamente por su nombre.
Apple afortunadamente ha proporcionado una API adecuada para esto en iOS 8, imageNamed:inBundle:compatibleWithTraitCollection:
Se usa así:
[UIImage imageNamed:@"image-name"
inBundle:[NSBundle bundleForClass:self.class]
compatibleWithTraitCollection:nil]
o en rápido:
let image = UIImage(named: "image-name",
inBundle: NSBundle(forClass: self),
compatibleWithTraitCollection: nil)
Como tenía que resolver esto para Swift, pensé que agregaría también ...
if let imagePath = NSBundle.mainBundle().pathForImageResource("TestImage.png")
{
imageView.image = NSImage(contentsOfFile: imagePath)
}
Donde tengo TestImage.png
en el grupo de Supporting Files
dentro de mi paquete.
Este método devuelve una imagen en cualquier lugar del proyecto xcode: =>
+(UIImage*)returnUIImageFromResourceBundle:(NSString*)imageName
{
NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"Resource" ofType:@"bundle"];
NSString *receivedImageNam = [[NSBundle bundleWithPath:bundlePath] pathForResource:imageName ofType:@"png"];
UIImage *RetrievedImg = [[UIImage alloc] initWithContentsOfFile:receivedImageNam];
return RetrievedImg;
}
1) Si está trabajando con paquetes, vaya a paquete de destino y establezca COMBINE_HIDPI_IMAGES en NO. En otro caso, la imagen se convertirá a formato tiff.
2) prueba este código:
NSBundle *bundle = [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"YourBundle" withExtension:@"bundle"]];
NSString *imagePath = [bundle pathForResource:@"imageInBundle" ofType:@"png"];
UIImage *image = [UIImage imageWithContentsOfFile:imagePath];
Una forma rápida de hacerlo si va a usarlo un par de veces en el mismo control de vista:
Obtenga la imagen en cualquier lugar de la misma clase que el siguiente método:
// this fetches the image from: MyBundle.bundle/folder/to/images/myImage.png
UIImage *myImage = [self imageFromBundle:@"MyBundle" withPath:@"folder/to/images/myImage.png"];
Método que recupera la imagen:
- (UIImage *)imageFromBundle:(NSString *)bundleName withPath:(NSString *)imageName
{
NSURL *bundleURL = [[NSBundle mainBundle] URLForResource:bundleName withExtension:@"bundle"];
NSBundle *bundle = [NSBundle bundleWithURL:bundleURL];
NSString *imagePath = [bundle pathForResource:imageName ofType:nil];
UIImage *image = [UIImage imageWithContentsOfFile:imagePath];
return image;
}
O simplemente llámalo directamente del paquete:
UIImage *myImage = [UIImage imageNamed:@"MyBundle.bundle/folder/to/images/myImage.png"];
Para Swift 3
let prettyImage = UIImage(named: "prettyImage",
in: Bundle(for: self),
compatibleWith: nil)
Swift 3
let myImage = UIImage(named: "nameOfImage", in: Bundle(for: type(of: self)), compatibleWith: nil)
No puedo obtener el paquete actual, así que hago esto:
Bundle(for: type(of: self))
Versión Swift
La respuesta de @ AndrewMackenzie no me funcionó. Esto es lo que funcionó
let image = UIImage(named: "imageInBundle.png")
imageView.image = image
Mi respuesta completa está aquí .