iOS, notificaciones locales con badge automático

El sistema de notificaciones locales en iOS nos obliga a controlar manualmente (y llevar la cuenta) del número que aparece en el badge de la aplicación. Esto requiere implementar un sistema que lleve la cuenta de las notificaciones nuevas y de las que se han leído.

Para los casos es simples os aconsejo usar una categoría que nos lleva la cuenta autoincremental de forma automática.

UILocalNotification Category

Cocoa: Reproducir música y vídeo al mismo tiempo

En ocasiones necesitas reproducir un vídeo en tu aplicacion mientras esta sonando alguna canción de fondo o incluso música del usuario. Por defecto el sistema solo tiene una sesión de audio y al encender el vídeo se va a parar la música.

Para reproducir tanto la música como el vídeo al mismo tiempo se tiene que cambiar la categoría de la sesión de audio para que crea que es un audio de ambiente.

NSError *setCategoryError = nil;

[[AVAudioSession sharedInstance]

     setCategory: AVAudioSessionCategoryAmbient

     error: &setCategoryError;];

if (setCategoryError) { /* handle the error condition */ }

De esta forma el vídeo se reproducirá como sesión de audio principal pero la de ambiente continuara sonando.

Cocoa Touch, UIButton dentro de UITableViewCell

Hay un comportamiento en UIKit que a veces resulta raro y destroza bastante el diseño de tu interfaz. En ocasiones necesitamos añadir un UIButton dentro de un UITableViewCell para dar más opciones a los usuarios.

El problema es que al pulsar sobre la celda esta se ilumina y automáticamente el botón también. Esto es porque por defecto la celda envia la señal de “hightlighted” y de “selected” a todas sus subvistas. Sigue leyendo

Cocoa: dar formato complejo a un UILabel

En ocasiones necesitamos que un mismo UILabel tenga distintos formatos de fuente. Por ejemplo: “Hora: 13:58 am”. La única forma básica de hacer esto es usando tres UILabel y adaptarlos dinámicamente con el contenido.

Pero a partir de iOS 4.0 el sistema incluya la clase NSAttributedString que permite crear un NSString y asociar a cada carácter una información de formato. El problema es que aún no hay ningún elemento del UIKit que use esta nueva funcionalidad por lo que tenemos que recurrir a vistas customizadas que la usen.

Existen algunas clases de código libre que podeís usar: Sigue leyendo

Cocoa: Macros para generar NSString

En Cocoa tenemos varias estructuras que usamos habitualmente como pueden ser CGRect, CGSize o CGPoint, por poner algún ejemplo. Normalmente estas estructuras se usan para definir las posiciones de las vistas o las capas, pero en ocasiones necesitamos mostrarlas en la consola para asegurarnos que las capas están bien colocadas.

Hay algunas macros que pueden facilitarnos la vida ya que tener que acceder a los atributos de cada estructura es bastante lento.

  • NSStringFromCGRect
  • NSStringFromCGSize
  • NSStringFromCGPoint

Usandolas con NSLog tenemos una forma fácil de mostrarlas en la consola.

Utilizar cualquier fuente en iOS

El diseño y la usabilidad es una de las mejores cosas de la filosofía que trae consigo el software de Mac OS y el de iOS. Con la cantidad de aplicaciones que hay ahora mismo en la App Store es necesario tener un buen diseño si quieres diferenciarte de la competencia.

Una de las cosas más importantes de un buen diseño es la fuente utilizada en los textos. iOS permite utilizar cualquier fuente, incluso las que no esta incluidas en el SDK, de una forma muy fácil:

  1. Añadir el archivo de la fuente al proyecto.
  2. Añadir una nueva linia en info.plist con la calve UIAppFonts y el nombre de la fuente que queramos utilizar.
  3. Usar la fuente como si otra del sistema se tratara!

Pos original en iOSDevCat, fuente Sixtemia

Sigue leyendo

Diagramas UML a partir del código

Aunque lo ideal es disenyar la aplicación y luego implementarla en ocasiones es necesaria hacer el proceso inverso. Generar un diagrama UML, por ejemplo el diagrama de clases, a partir del código ya implementado.

Para ello podéis usar la herramienta eMUL2. Un buen amigo ha realizado un tutorial (CAT) que nos enseña a usar esta herramienta con Eclipse.

Por si no entendéis el catalán:

  1. Descargar (la web la encontraréis en su página)
  2. Eclipse: Instalar nuevo software
  3. Generar diagrama de clases encima del proyecto

Explicación más detallada en el siguiente enlace:

El meu petit espai: Enginyeria inversa.