¿Cómo hago un background de mosaico basado en imágenes para UIView para que no se escala?

En la aplicación iOS, tengo UIView 250x85pt. Me gustaría tener un background de mosaico basado en imágenes. La image original es de 398×398 px. Me gustaría que mi image salga a la luz.

introduzca la descripción de la imagen aquí

Cuando ejecuto una aplicación, mi image es similar, pero por alguna razón se escala de la siguiente manera:

introduzca la descripción de la imagen aquí

Utilicé el siguiente código para lograrlo:

var image = UIImage(contentsOfFile: "myfilepath.png")! var uicolor = UIColor(patternImage: image) uiview.backgroundColor = uicolor 

¿Podría explicar 1. por qué ios escala mi image y 2. cómo dibujo la image de mosaico sin escala?

básicamente, la image es más grande que tu UIView . cuando le das a UIColor(patternImage: image) usa el tamaño 1x de la image. La image que generalmente tenemos las computadoras portátiles se ajusta al tamaño de la window con su relación de aspecto.

Así que networkinguzca su image a su requerimiento y luego aplíquelo como image de background.

Para ampliar la respuesta de Banto, el problema es que su vista es de 250×85 puntos, lo que, en los dispositivos retina, es realmente 500×170 píxeles. Cuando tu image x1 se convierte en un patrón, se aplica en el nivel de punto. El problema se puede cambiar fácilmente al establecer la escala en la image para que coincida con la escala del dispositivo:

 let view = UIView(frame: CGRect(x: 0, y: 0, width: 250, height: 85)) let image = UIImage(named: "myfilepath.png")! let scaled = UIImage(CGImage: image.CGImage, scale: UIScreen.mainScreen().scale, orientation: image.imageOrientation) view.backgroundColor = UIColor(patternImage: scaled!) 

Prueba esto

  self.mainView.layer.contents = (id)[UIImage imageNamed:@"CROPNET.png"].CGImage;