iphone - insertar - imagen de fondo en xcode
Cómo completar la imagen de fondo de una UIView (10)
El método colorWithPattern:
es realmente para generar patrones a partir de imágenes. Por lo tanto, es muy probable que la personalización que requiera no sea posible, ni debe serlo.
De hecho, necesita utilizar un UIImageView
para centrar y escalar una imagen. El hecho de que tengas un UIScrollView
no evita esto:
Haga self.view
una vista genérica, luego agregue tanto el UIImageView
como el UIScrollView
como subvistas. Asegúrese de que todo esté correctamente conectado en Interface Builder y haga que el color de fondo de la vista de desplazamiento sea transparente.
Este es en mi humilde opinión el diseño más simple y flexible para futuros cambios.
Tengo una UIView
y configuré una imagen de fondo de esta manera:
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"sfond-appz.png"]];
Mi problema es que la imagen de fondo no está centrada dentro de la vista, sino que se reproduce varias veces para llenar toda la vista. ¿Hay alguna manera de centrar la imagen dentro de uiview y scretch para tener tamaño de pantalla?
Nota: No puedo usar UIImageView
para fondo porque tengo una vista de scrollview
.
La forma correcta de hacerlo en Swift 4 , si su fotograma como tamaño de pantalla es correcto y luego viewDidLayoutSubviews
en cualquier otro lugar, es importante escribir esto en viewDidLayoutSubviews
porque podemos obtener el fotograma real en viewDidLayoutSubviews
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
UIGraphicsBeginImageContext(view.frame.size)
UIImage(named: "myImage")?.draw(in: self.view.bounds)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
view.backgroundColor = UIColor.init(patternImage: image!)
}
La respuesta marcada está bien, pero hace que la imagen se alargue. En mi caso, tenía una pequeña imagen de mosaico que quería repetir, no estirar. Y el siguiente código fue la mejor forma de resolver el problema del fondo negro:
UIImage *tileImage = [UIImage imageNamed:@"myTileImage"];
UIColor *color = [UIColor colorWithPatternImage:tileImage];
UIView *backgroundView = [[UIView alloc] initWithFrame:self.view.frame];
[backgroundView setBackgroundColor:color];
//backgroundView.alpha = 0.1; //use this if you want to fade it away.
[self.view addSubview:backgroundView];
[self.view sendSubviewToBack:backgroundView];
Necesita procesar la imagen de antemano, para hacer una imagen centrada y estirada. Prueba esto:
UIGraphicsBeginImageContext(self.view.frame.size);
[[UIImage imageNamed:@"image.png"] drawInRect:self.view.bounds];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.view.backgroundColor = [UIColor colorWithPatternImage:image];
Para Swift usa esto ...
UIGraphicsBeginImageContext(self.view.frame.size)
UIImage(named: "ImageName.png")?.draw(in: self.view.bounds)
if let image = UIGraphicsGetImageFromCurrentImageContext(){
UIGraphicsEndImageContext()
self.view.backgroundColor = UIColor(patternImage: image)
}else{
UIGraphicsEndImageContext()
debugPrint("Image not available")
}
Para Swift 2.1 usa esto ...
UIGraphicsBeginImageContext(self.view.frame.size)
UIImage(named: "Cyan.jpg")?.drawInRect(self.view.bounds)
let image: UIImage! = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
self.view.backgroundColor = UIColor(patternImage: image)
Para Swift 3.0 usa el siguiente código:
UIGraphicsBeginImageContext(self.view.frame.size)
UIImage(named: "bg.png")?.drawAsPattern(in: self.view.bounds)
let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
self.view.backgroundColor = UIColor(patternImage: image)
Puede usar el método UIGraphicsBeginImageContext para establecer el tamaño de la imagen igual que la vista.
Sintaxis: void UIGraphicsBeginImageContext (tamaño CGSize);
#define IMAGE(imageName) (UIImage *)[UIImage imageWithContentsOfFile:
[[NSBundle mainBundle] pathForResource:imageName ofType:IMAGE_TYPE_PNG]]
UIGraphicsBeginImageContext(self.view.frame.size);
[[UIImage imageNamed:@“MyImage.png"] drawInRect:self.view.bounds];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.view.backgroundColor = [UIColor colorWithPatternImage:IMAGE(@"mainBg")];
Solución Swift 4:
@IBInspectable var backgroundImage: UIImage? {
didSet {
UIGraphicsBeginImageContext(self.frame.size)
backgroundImage?.draw(in: self.bounds)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
if let image = image{
self.backgroundColor = UIColor(patternImage: image)
}
}
}
Repetir:
UIImage *img = [UIImage imageNamed:@"bg.png"];
view.backgroundColor = [UIColor colorWithPatternImage:img];
Estirado
UIImage *img = [UIImage imageNamed:@"bg.png"];
view.layer.contents = img.CGImage;