2011-04-24 12 views
7

puedo lograr lo mismo que un siguiente:UIView trama de fondo

view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"imageName.png"]]; 

utilizando sólo IB? ¿Sin necesidad de escribir una línea de código? Parece que IB solo permite configurar el color normal, no las imágenes como fondo.

+1

IB es muy limitado cuando necesita personalizar la interfaz de usuario. Intento no utilizar IB para poder crear diseños e interacciones más bellos y específicos para el usuario. –

+2

@Edmar Un mal consejo. Haz todo lo que puedas en IB. No puede atravesarlo del todo, pero puede ayudarlo a obtener una gran cantidad de cruces para que pueda enfocarse en los diseños e interacciones más bellas y específicas para el usuario. –

Respuesta

6

Interface Builder no permite el uso de un patrón de fondo. Sin embargo, podría simplemente superponer el fondo con la imagen adecuada dentro de UIImageView. Esto daría el aspecto deseado a la aplicación, sin tener que usar el código que publicó anteriormente.

Sin embargo, estoy totalmente en desacuerdo con que solo use Interface Builder. El código es mucho más limpio para mí y permite un mayor control sobre lo que construyes.

+3

El patrón sería el enfoque preferido, especialmente si realmente es un patrón. El búfer de cuadros solo tendrá que almacenar en caché el mosaico para repetirlo, por lo que consumirá menos memoria. Además, con UIImageView, tienes la sobrecarga adicional de un objeto de vista. –

+0

De acuerdo. Como dije, no estoy de acuerdo en que deba usar y solo use IB. Creo que es una implementación mucho más sencilla con el uso de hacerlo a través del código. –

+1

@theOrkus No necesariamente. Mantener tanto en IB crea una implementación más limpia de MVC. Su vista es separada y distinta del controlador. Esto es especialmente así cuando se utiliza IB para posicionar sus elementos. ¿Por qué su controlador se preocupa por ese tipo de detalles? Haga tanto de eso en IB para que su controlador pueda enfocarse en la lógica comercial. –

2

Esto no puede hacerse en IB, pero obtuvo el código correcto. A pesar de lo que otros han comentado, utilice IB de la manera más completa posible, de esa manera usted puede enfocar sus esfuerzos en la lógica comercial real de su aplicación, solo personalizando aún más allá donde IB no llega. ¡Buena suerte!

0

Como han dicho otros, no puede hacer esto únicamente en IB/storyboard. Pero con @IBDesignable usted puede agregar algunas líneas a su subclase y tener mostrar en IB, que es muy bueno.

import UIKit 

@IBDesignable 
class MyView: UIView { 
override func awakeFromNib() { 
    super.awakeFromNib() 
    self.addPattern() 
} 

override func prepareForInterfaceBuilder() { 
    self.addPattern() 
} 

private func addPattern() { 
    let image = UIImage(named: "MyPattern", in: Bundle(for: self.dynamicType), compatibleWith: nil) 
    self.backgroundColor = UIColor(patternImage: image!) 
} 

} 

A continuación, cambie la clase del guión gráfico/vista IB a MyView.

Cuestiones relacionadas