2010-09-26 3 views
7

¿Hay alguna manera de hacer una lista de viñetas en el iphone?iphone bullet list

Si copia y pega una lista de viñetas en una UITextView en IB, aparece. ¿Hay alguna forma de hacerlo programáticamente?

Gracias

Tom

+0

sí, funciona - y si se copia y pega de la palabra este también funciona (lo asumo porque es el mismo personaje), pero como no hay formato ni garantía de soporte, decidí que la tuya era la mejor y la más "verdadera" respuesta. Sin embargo, en mi aplicación he usado la segunda respuesta. –

+0

https://codeload.github.com/eyalc/ECListView/zip/master – Hemang

Respuesta

4

Por lo que yo sé que la única manera de lograr esto (y casi cualquier otro texto enriquecido formato) en el iPhone es utilizar un UIWebView e insertar código HTML como esto:

<ul> 
    <li>Bullet</li> 
</ul> 

En respuesta a tu comentario, UIWebViews puede "embellecido" por la siguiente paz de código:

for(UIView* v in webView.subviews){ 
    if([v isKindOfClass:[UIScrollView class] ]){ 

     //disable bouncing 
     UIScrollView* sv = (UIScrollView*) v; 
     sv.alwaysBounceVertical = NO; 
     sv.alwaysBounceHorizontal = NO; 

     //disable scroll-shadows 
     for (UIView *subView in [sv subviews]) 
      if ([[[subView class] description] isEqualToString:@"UIImageView"]) 
       subView.hidden = YES; 
    } 
} 

No he enviado esto todavía, pero supongo que debería ser "AppStore safe".

+1

odio UIWebViews - me dan ese feo canal de "rebote" en la parte superior e inferior. :(pero gracias –

+0

Comparto tus sentimientos sobre WebViews, pero se pueden mejorar. ¡Echa un vistazo a mi publicación editada! – Phlibbo

+3

Iterar a través de las subvistas de un 'UIWebView' se considera una API privada. No asumas que será aceptado – rpetrich

38

El carácter "viñeta" está en el punto de código Unicode U + 2022. Puede usarlo en una cadena con @"\u2022" o [NSString stringWithFormat:@"%C", 0x2022].

El carácter "line feed" está en el punto de código Unicode U + 000A, y se utiliza como carácter de nueva línea de UIKit. Puede usarlo en una cadena con @"\n".

Por ejemplo, si usted tenía una matriz de cadenas, se puede hacer una lista con viñetas con algo como esto:

NSArray * items = ...; 
NSMutableString * bulletList = [NSMutableString stringWithCapacity:items.count*30]; 
for (NSString * s in items) 
{ 
    [bulletList appendFormat:@"\u2022 %@\n", s]; 
} 
textView.text = bulletList; 

No va sangría de líneas como un procesador de textos "correcta". Se producirán "cosas malas" si los elementos de su lista incluyen caracteres de nueva línea (¿pero qué esperaba?).

(Apple no garantiza que "\ uXXXX" se escapa de trabajo en los literales NSString, pero en la práctica lo hacen si se utiliza el compilador de Apple.)

+0

esto es brillante (con tal de que funcione) :) Gracias. –

+0

ya esto es excelente. Esto funciona como se desea. –

+0

No pude obtener la sangría funcionando correctamente. Las viñetas se imprimen en la misma línea: "* Texto * Texto2". ¿Hay una solución para esto? – piperchester