No estoy seguro de si el "administrador de diseño" es el término correcto, pero estoy buscando una forma de hacer que UIViews fluya a su vista principal, como lo haría un div en una página HTML. ¿Hay una manera fácil de hacerlo, ya sea a través de las API de iPhone o algo externo?iPhone - ¿Administrador de diseño para UIViews?
Respuesta
No conozco una API para hacer esto. Core Animation en la Mac tiene algunas cosas de diseño, pero creo que no estaba incluido en el iPhone.
Lo que usted describe no parece extremadamente difícil. ¿De código abierto? :-)
¡Sí! En general, soy demasiado descuidado/flojo/egoísta para que cualquiera de mis intenciones de código abierto vaya a ninguna parte. Pero tal vez esto sea diferente :) – morgancodes
No hay nada como esto realmente incorporado en el SDK, pero no debería ser demasiado difícil conseguir el comportamiento que buscas. Simplemente llame al
NSArray *subs = [parentView subviews];
para obtener todas las subvistas ya presentes. Bucle a través de ellos de esta manera
CGRect leftMostViewsFrame = nil;
for(UIView *cur in subs){
CGRect where = cur.frame;
//find the left most frame for a given X coord
}
y colocar la nueva vista al lado de él
newView.frame = CGRectMake(leftMostViewsFrame.origin.x + leftMostViewsFrame.size.width,
[parentView addSubview:newView];
......
se puede escribir mucho más limpia que la que y hay una Mucho más control y razonamiento que necesita hacer para obtener todo el comportamiento de flotación, pero ese es el enfoque básico que tomaría. No sé si hay una biblioteca de terceros que podrías usar o no.
Gracias Joe, voy a seguir adelante y hacer eso. – morgancodes
@morgancodes Escribí una solución completa basada en esta respuesta: http://stackoverflow.com/a/11379438/974531 –
Después de hacer algunas búsquedas encontré esto: http://code.google.com/p/layoutmanagers/ Última actualización fue en diciembre de 2009, pero a primera vista, parece que todavía puede ser aplicable a las versiones actuales de iOS.
Creé un tenedor de los anteriores en github: https://github.com/RefuX/LayoutManagers-Fork y agregó GridLayout. Lo he usado en las IU de iPhone y iPad. Para iOS 4 y 5. Me gusta :) – RefuX
Aquí es una solución completa (basado en the answer by Joe Cannatti):
Añadir un
UIView
a su guión, y vincularlo a suViewController
bajo un nombre, por ejemplo,container
. (En caso de que su vista de contenedor es la visión de conjunto, se puede utilizar en lugar deself.view
container
dentro de suViewController.m
.)Crear y añadir elementos de la interfaz de
container
. Por ejemplo, puede crear y añadir unUILabel
acontainer
con:UILabel* label = [[UILabel alloc] init]; label.text = @"Foo"; [label sizeToFit]; [container addSubview:label];
principio, y siempre que se añada/eliminar/modificar los elementos de la interfaz a/desde/dentro de
container
, puede volver a organizar en el flujo de diseño con:float x = 0, y = 0, width = container.frame.size.width, rowHeight = 0; for (UIView* view in container.subviews) { // only re-arrange user-added views (change condition as required) if (![view isKindOfClass:UILabel.class]) continue; float w = view.frame.size.width, h = view.frame.size.height; bool fitsInRow = x + w <= width; if (!fitsInRow) {x = 0; y += rowHeight; rowHeight = h;} view.frame = CGRectMake(x, y, w, h); x += w; rowHeight = MAX(rowHeight, h); } // if container is a UIScrollView, change content size container.contentSize = CGSizeMake(width, y + rowHeight);
- 1. jQuery Administrador de diseño
- 2. Diseño de MediaWiki para iPhone
- 3. Aplanar las subvistas de UIViews a UIImage iPhone 3.0
- 4. administrador de diseño para aplicaciones de diálogo MFC
- 5. ¿Existe un patrón de diseño de administrador?
- 6. UIViews con UIPageControl
- 7. Cambio de tamaño de UIViews
- 8. Diseño impulsado por dominio: administrador y servicio
- 9. Arrastrar UIView entre UIViews
- 10. Voltear UIViews desde arriba/abajo
- 11. Cómo enmascarar UIViews en iOS
- 12. Consejos de diseño gráfico de iPhone para desarrolladores
- 13. Diseño/estructura del directorio para proyectos grandes de iPhone/iPad
- 14. Patrón de diseño para Core Data iPhone App
- 15. iPhone Objective-C foreach diseño
- 16. ¿Algún buen framework de administrador de sonido de iPhone?
- 17. ¿Cómo puedo personalizar el diseño de administrador activo?
- 18. iOS: ¿Debo agregar UIViews o CALayers para la animación?
- 19. iOS iPhone ¿es posible clonar UIView y hacer que se dibuje en dos UIViews?
- 20. ¿Cómo se muestran UIViews personalizados en InterfaceBuilder?
- 21. Pasar eventos táctiles al hermano correspondiente UIViews
- 22. Administrador de configuración para PHP
- 23. Desarrollo de iPhone: patrones de diseño de aplicaciones
- 24. ¿Cómo hacer una animación flip entre más de dos UIViews?
- 25. diseño de subvista de iPhone (UIView vs UIViewController)
- 26. Animación de volteo entre dos UIViews en un UIViewController
- 27. Cambiar User ModelAdmin para administrador de Django
- 28. Crear un administrador de ventanas para Linux
- 29. Android Administrador de teléfonos para detectar sim
- 30. Nombre del administrador de ventanas para Windows
solo estaba pensando lo mismo. Una colección de LayoutManagers como en Java Swing sería útil cuando realmente no quiere molestarse con InterfaceBuilder, pero tampoco quiere tener que lidiar con las complejidades de posicionar todo a mano. – ra9r
Solo está la vista de webkit si solo quieres mostrar cosas. He estado jugando con la incrustación de html para cosas de la pantalla de información bien presentada. – morgancodes
Esto realmente no existe en iOS 5 o anterior.Para obtener información sobre iOS 6, consulte su documentación protegida por NDA, que aquí no podemos analizar abiertamente. –