2009-01-30 15 views
18

Me parece que me gusta diseñar nuevos UIViews y UIControls que implementan su propio método -drawRect:. Esto funciona bien para mí, especialmente cuando se compone de UIViews en Interface Builder.¿Cómo se muestran UIViews personalizados en InterfaceBuilder?

Pero componerlos en Interface Builder es molesto porque simplemente aparecen como rectángulos planos aburridos.

Sería grandioso si las vistas se renderizaran como lo hacen los controles incorporados.

¿Hay alguna forma en que pueda estructurar mi proyecto para que Interface Builder represente mis vistas personalizadas?

Respuesta

18

Para hacer esto, en realidad tiene que crear un complemento para Interface Builder que use su clase personalizada. Una vez que haya creado e instalado su complemento, podrá arrastrar y soltar instancias de su clase (su vista) en otra ventana/vista/lo que sea como cualquier otro control. Para comenzar a crear complementos de IB, consulte el Interface Builder Plug-In Programming Guide. Además, recomiendo echar un vistazo al libro de Aaron Hillegass, Cocoa Programming for Mac OS X. Además de estar muy bien escrito y ser fácil de entender, tiene un capítulo sobre cómo crear sus propios controles IB Palette.

+20

Solo un comentario para las personas que llegan a esta publicación en 2012+: Xcode 4 ya no es compatible con los complementos de IB. No tienes suerte. –

+0

Gracias @RandyMarsh por salvarme posiblemente 30-60 minutos :) –

+1

@EgeAkpinar De nada. :-) Y lo siento por tener que continuar buscando una solución poco elegante para su problema, cualquiera que sea. :-p –

1

Esto se puede lograr marcando su subclase UIView con @IBDesignable. Una vez que haga esto, sus vistas personalizadas se mostrarán en Interface Builder. Incluso puede agregar parámetros que se pueden configurar marcándolos como @IBInspectable. Aquí está un ejemplo rápido:

@IBDesignable class customView: UIView { 

    @IBInspectable var count: Int = 0 

} 

Hay un article on NSHipster que proporciona más detalles.

+1

Al usar arriba enfoque no podemos agregar la vista personalizada en la Biblioteca de objetos. – ManiaChamp

+0

@ManiaChamp, tienes razón, pero la pregunta no pregunta sobre cómo agregar la vista a la biblioteca de objetos. – tebs1200

+1

Esta pregunta está vinculada a otra que pregunta cómo agregar una vista personalizada en la Biblioteca de objetos, por lo que muchos de nosotros venimos a buscarla. ;) – leanne

Cuestiones relacionadas