En este tutorial te mostraré algunos de los efectos especiales que pueden ser aplicados a un objeto rectangular simple, jugando con las sombras. Obviamente no me refiero a efecto de sombra aplicada en una capa, pero las sombras reales creados manualmente. Primero dibuja un rectángulo en una capa de esta manera:

Continuación ...
Como se ha mencionado iPhone FirstApp: Adivinar el número - Parte 1 podemos ver cómo hacer una aplicación para el iPhone de Apple sin necesidad de utilizar Interface Builder! De hecho, vamos a eliminar los archivos físicos creados por Interface Builder, Xcode asistente. Al final de este post, entonces, tenemos una aplicación idéntica en todos los aspectos, a la conseguida en la primera parte, con la diferencia que vamos a lograr todos nuestros componentes visuales, incluyendo la ventana principal, por completo con el código.
La aplicación ya está hecho, si lo que desea es descargar, está disponible en mi repositorio de Google Code:
Me gustaría señalar de inmediato que el ZIP de este ejemplo que pesan menos que la última vez! 
Creamos el proyecto
Comenzamos por crear nuestro proyecto SecondApp (para distinguirla de FirstApp), aunque esta vez elija Ventana de aplicaciones basado en:

Ahora vamos a borrar todo lo relacionado con Interface Builder. : eliminatelo anche dal file system, quindi selezionate Also Move to Trash . Elimine el archivo MainWindow.xib , que se encuentra en la carpeta de Resources : también se elimina del sistema de archivos, a continuación, seleccione también se mueven a la papelera. nella casella Main nib file base name : A continuación, seleccione el archivo SecondoApp-info.plist y eliminar la referencia a la MainWindow punta de caja principal nombre base del archivo:

En este punto, ya no tienen Windows, por lo menos a través de Interface Builder. , e modifichiamo la funzione main() in questo modo: Por lo tanto, abrir el archivo main.m , situado en Other Sources , y modificar la función main() así:
1 2 3 4 5 6 7 8 9 10 11
| int argc, char * argv [ ] ) { int main (int argc, char * argv []) { pool = [ [ NSAutoreleasePool alloc ] init ] ; NSAutoreleasePool * Piscina = [[ NSAutoreleasePool alloc] init]; / / Al eliminar el archivo. XIB hemos perdido el punto / / Delegado a la Asamblea Parlamentaria Paritaria, a continuación, pasar a la "mano" UIApplicationMain ( argc, argv, nil , @ "SecondAppAppDelegate" ) ; int retval = UIApplicationMain (argc, argv, nil, @ "SecondAppAppDelegate"); ; [Comunicado de piscina]; volver retval; } |
Abrir SecondAppAppDelegate.me a continuación, crear la ventana principal en el código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| void ) applicationDidFinishLaunching : ( UIApplication * ) application { - (Void) applicationDidFinishLaunching: (UIApplication *) {aplicación
/ / Obtener el tamaño de la pantalla (320, 480) UIScreen mainScreen ] applicationFrame ] ; CGRect windowRect = [[Principal UIScreen] applicationFrame]; / / Se crea una ventana - como lo hemos hecho en Interface Builder bye bye [ [ UIWindow alloc ] initWithFrame : windowRect ] ; MainWindow UIWindow * = [[UIWindow alloc] initWithFrame: windowRect]; / / Establecer el fondo de la ventana de color amarillo, para diferenciar / / El FirstApp solicitud anterior [ UIColor yellowColor ] ] ; [SetBackgroundColor MainWindow: [UIColor yellowColor]];
mainWindow ] ; [Self SetWindow: MainWindow]; ; [Ventana makeKeyAndVisible];
; [MainWindow liberación]; } |
Ya se puede probar la aplicación, si usted consigue una ventana amarilla que lo hizo todo bien!
, necessario solo se si usa Interface Builder. En el archivo de SecondAppAppDelegate.h podemos eliminar IBOutlet , sólo es necesario si se utiliza Interface Builder. También añadir que nuestras variables globales, la última vez que había entrado en el controlador. A continuación, modificar el archivo SecondAppAppDelegate.h :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| # Importar <UIKit/UIKit.h> NSObject <UIApplicationDelegate> { @ Interface SecondAppAppDelegate: NSObject {<UIApplicationDelegate> UIWindow * ventana; UITextField * número; UIButton botón *; numeroACaso int; } nonatomic, retain ) UIWindow * window; @ Propiedad (no atómica, retener) UIWindow ventana *; void ) controllaNumero; - (Void) obtenerNumero; @ End |
, in quanto non stiamo usando Interface Builder. Una vez más, hemos preparado la definición del método controllaNumero , como la última vez, pero hemos eliminado la indicación IBAction , porque no se está utilizando Interface Builder.
Creamos la interfaz de código
Es el momento de crear código con todos los componentes de nuestra interfaz. ed inseriamo il seguente codice: Volvamos al archivo SecondAppAppDelegate.m , posizioniamoci antes [mainWindow release] e introduzca el siguiente código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| / / Creamos la barra de título [ [ UINavigationBar alloc ] initWithFrame : CGRectMake ( 0.0 , 0.0 , 320.0 , 44.0 ) ] ; UINavigationBar myNavigationBar * = [[UINavigationBar alloc] initWithFrame: CGRectMake (0.0, 0.0, 320.0, 44.0)]; myNavigationBar.barStyle = UIBarStyleDefault; [ [ UINavigationItem alloc ] initWithTitle : @ "Indovina un numero" ] ; UINavigationItem navigationItem * = [[UINavigationItem alloc] initWithTitle: @ "Adivina el número"]; navigationItem animated : NO ] ; [MyNavigationBar pushNavigationItem: navigationItem animados: NO]; myNavigationBar ] ; [Ventana addSubview: myNavigationBar];
/ / Crear la etiqueta [ [ UILabel alloc ] initWithFrame : CGRectMake ( 10 , 50 , 300 , 80 ) ] ; UILabel myLabel * = [[UILabel alloc] initWithFrame: CGRectMake (10, 50, 300, 80)]; UIColor clearColor ] ; myLabel.backgroundColor = [UIColor clearColor]; ; myLabel.numberOfLines = 2; "iPhone ha pensato un numero da 1 a 10, prova ad indovinarlo?" ; myLabel.text = @ "El iPhone ha diseñado un número del 1 al 10, trata de adivinar?" myLabel ] ; [Ventana addSubview: myLabel];
/ / Crear entrada de texto UITextField alloc ] initWithFrame : CGRectMake ( 10 , 120 , 300 , 30 ) ] ; = número [[UITextField alloc] initWithFrame: CGRectMake (10, 120, 300, 30)]; numero.borderStyle = UITextBorderStyleRoundedRect; numero.textAlignment = UITextAlignmentCenter; numero.keyboardType = UIKeyboardTypeNumberPad; "Inserisci il numero" ; numero.placeholder = @ "Introduzca el número"; numero ] ; [Ventana addSubview: número];
/ / Crear el botón UIButton buttonWithType : UIButtonTypeRoundedRect ] ; botón = [UIButton buttonWithType: UIButtonTypeRoundedRect]; 10 , 180 , 300 , 30 ) ; bottone.frame CGRectMake = (10, 180, 300, 30); @ "Premi qui" forState : UIControlStateNormal ] ; [Botón setTitle: @ "Click Aquí" Forst: UIControlStateNormal]; self action : @selector ( controllaNumero ) forControlEvents : UIControlEventTouchUpInside ] ; El botón [AddTarget: acción de auto: @ selector (obtenerNumero) forControlEvents: UIControlEventTouchUpInside]; bottone ] ; [Ventana addSubview: botón];
; [MyLabel liberación]; ; [NavigationItem liberación]; ; [MyNavigationBar liberación]; |
della scorsa volta, subito dopo il [mainWindow release]; inseriamo: Desde el ' applicationDidFinishLaunching corresponde a viewDidLoad que la última vez, justo después de la [mainWindow release]; insertar:
1
| + arc4random ( ) % 10 ; numeroACaso arc4random = 1 + () 10%; |
Ahora que podemos hacer es implementar el método controllaNumero , que será idéntico (aparte del prototipo) para que el tiempo utilizado por última vez:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| void ) controllaNumero { - (Void) {obtenerNumero "Premuto bottone di controlla numero" ) ; NSLog (@ "número presionado el botón de control"); [ numero.text integerValue ] ; numeroInserito = int [numero.text integerValue]; message; NSString * mensaje; "Il numero inserito è %d" , numeroInserito ) ; NSLog (@ "El número introducido es% d", numeroInserito); numeroInserito <numeroACaso ) { if (numeroInserito <numeroACaso) { "Troppo basso..." ; message = @ "demasiado baja ..."; ( numeroInserito> numeroACaso ) { } Else if (numeroInserito> numeroACaso) { "Troppo alto..." ; message = @ "demasiado alto ..."; ( numeroInserito == numeroACaso ) { } Else if (numeroInserito numeroACaso ==) { "Bravo hai indovinato" ; message = @ "Bravo, lo habéis adivinado"; + arc4random ( ) % 10 ; numeroACaso arc4random = 1 + () 10%; "Numero pensato %d" , numeroACaso ) ; NSLog (@ "% d Número de pensamiento," numeroACaso); } [ [ UIAlertView alloc ] UIAlertView alertMessaggio * = [[UIAlertView alloc] "Responso" initWithTitle: @ "Respuesta" mensaje: mensaje delegado: nil "OK" cancelButtonTitle: @ "OK" ] ; otherButtonTitles: nil]; ; [AlertMessaggio show]; ; [AlertMessaggio liberación]; "" ; numero.text @ = ""; } |
Ya hemos terminado!
Conclusiones y consideraciones
, proprio perchè volevo lasciarlo il più semplice e snello possibile e, anche, per dimostrare che non sono elementi sempre necessari. Este ejemplo no hacer uso directo de un UIView o UIViewController , sólo porque me quería ir lo más simple y ágil como sea posible y, también, para mostrar que los elementos no siempre son necesarias. Sin embargo insertar objetos directamente en la ventana puede tener algún sentido en este ejemplo y otros contextos esporádicos. portano comunque benefici in tantissimi altri casi, ein alcuni sono praticamente indispensabili; come avremo modo di vedere in futuro. El uso de UIView y UIViewController traer beneficios en muchos otros casos, sin embargo, algunos son ein prácticamente indispensable, como veremos en el futuro.
Continuación ...
Hay muchos plugins para WordPress que permiten mejorar las características y funcionamiento de la "búsqueda". Casi todos los plugins disponibles tienen un atractivo y útil función de resaltar los términos de búsqueda en el resultado de la búsqueda. Si usted no planea más appensantire tu instalación de WordPress, pero no quieren renunciar a todo lo que una característica similar, aquí es cómo implementar fácilmente un "highlights" de las termitas en los resultados de búsqueda.
Continuación ...
Desde la versión 2.5 de WordPress (preferiblemente 2.5.1) están disponibles los llamados códigos cortos , un procedimiento que permite la creación de los ganchos de devolución de llamada, o bien, cuando el texto de nuestro mensaje se encuentra una cadena con formato con paréntesis como [id_shortcode] . Antes del lanzamiento de WordPress 2.5 shortcodes se llevaron a cabo de forma manual (ver Napolux ), ahora se puede explotar con mayor sencillez y para diversos usos.
Continuación ...
La primera fuente que me levanté en mis manos ha sido escrito en básico y consistía en unas pocas líneas de código, para aclararme. Era un juego simple que genera un número aleatorio de 1 a 10 y, a través del teclado, compruebe que el número introducido se Maggioni, menor o igual al número aleatorio. A pesar de su simplicidad en bruto sigue siendo, para mí, uno de los mejores ejemplos - simple, divertida y práctica - para explicar a aquellos que no saben nada acerca de la programación lo que se entiende realmente por "programa de ordenador". Así que me decidí a proponer para el iPhone de Apple, tal vez ayude a alguien ...
Continuación ...
Si nos basamos en el sencillo ejemplo hellodolly.php proporcionado por WordPress , o incluso la misma los documentos oficiales, nunca llega a escribir un plug-in adecuado y eficiente. Queremos aquí para analizar una posible estructura, a continuación, un esqueleto que se pueden utilizar varias veces.
Continuación ...
Tal vez no todo el mundo sabe sobre el potencial de manipulación de texto en Photoshop, en particular el hecho de que puede manipular el texto de una manera muy avanzada. Por ejemplo, si queríamos a "doblar" el texto, estaríamos tentados a usar la opción "Crear texto deformado"
, Que se abre una ventana con los siguientes valores:

Continuación ...
o un array di oggetti. La técnica que describo aquí es útil en muchas situaciones donde, por ejemplo, tenemos una array de array o array de objetos. , senza aver accesso alla select originale (sul database) che ha generato l'elenco (array) stesso: En WordPress es posible que desee manipular una lista de mensajes, en el formato estándar de array de stdClass Object sin tener acceso para seleccionar el original (la base de datos) que generó la lista (array) en sí:
Continuación ...
WordPress ofrece muchas funciones para navegar a través de los distintos puestos y las páginas hacia adelante y hacia atrás. Estos se utilizan dentro de los temas, a menudo de forma totalmente intercambiables, aunque contienen algunas diferencias. Esto, de hecho, crear una gran confusión en la elección de la función a usar. Aquí están algunas notas:
Continuación ...
Últimos Comentarios
Simon : Se molesta perturbado de nuevo y utilizar ese espacio para estas cosas ... sin embargo, no funciona ...
Giovambattista Fazioli : @ Simon: ¿qué puede ser debido a la sintaxis que utiliza, específicamente para PHP 5 +,...
Simon : He probado la noche anterior poner todo en functions.php, formas bien, jQuery, y las fichas que jQueryUI ...
Giovambattista Fazioli : @ Simon: Yo recomiendo la limpieza de ingresar un código como el de ...
Simon : @ Giovambattista Fazioli: Gracias por su paciencia, todo está claro ... ahora me siento ahora, ...