Instalar Sublime Text 2 + Package control manager + Emmet plugin

Sublime Text es un editor de texto que permite ahorrar mucho tiempo a la hora de desarrollar aplicaciones que usan mucho codigo, tal como html, css, javascript, php, jquery, etc etc.

Ademas permite utilizar snippets, que son atajos rapidos de codigo, que nos permite ahorrar. mucho tiempo.

Permite el uso de plugins, que aumentan las caracteristicas del programa, como por ejemplo “Emmet” (antiguamente llamado “ZenCode”), que permite crear codigo de una forma muy rapida.

Para poder instalar facilmente plugins, asi como el plugin emmet, debemos instalar  el package control manager para sublime text.

Vamos a ver los pasos para instalar todo:

Paso 1: Instalar sublime text 2

Lo descargamos de esta direccion. Elegimos la version correcta:
http://www.sublimetext.com/2

Paso 2: Instalamos el Package control manager:

Vamos a la web oficial:
https://sublime.wbond.net/installation

Elegimos Sublime text 2, y copiamos el codigo que aparece (Todo el codigo):

import urllib2,os; pf=’Package Control.sublime-package’; ipp = sublime.installed_packages_path(); os.makedirs( ipp ) if not os.path.exists(ipp) else None; urllib2.install_opener( urllib2.build_opener( urllib2.ProxyHandler( ))); open( os.path.join( ipp, pf), ‘wb’ ).write( urllib2.urlopen( ‘http://sublime.wbond.net/’ +pf.replace( ‘ ‘,’%20’ )).read()); print( ‘Please restart Sublime Text to finish installation’)

Vamos a nuestro programa sublime text, y vamos al menu View -> Show Console

Pegamos el codigo copiado, y le damos a INTRO.

Cerramos sublime Text, y lo abrimos de nuevo

Esto instalara todo lo necesario.

Paso 3: Instalar el Plugin EMMET:

Vamos al Menu Preferences -> Package Control, y elegimos INSTALL PACKAGE

Aparacera una lista de packages diferentes que podemos instalar. Aquí vienen incluidos todo tipo de plugins , asi como temas o pieles para nuestro sublime text, para poder cambiar el aspecto visual. Escribimos Emmet, y elegimos el paquete. Fijaros que pondrá entre paréntesis en la descripción del paquete (Ex-ZenCode). Elegimos el paquete, y se instalara.

Una vez terminado, podeis crear un nuevo documento de HTML por ejemplo, y pobrar el funcionamiento, escribiendo algo asi:

table>tr.fila>td*8
y le damos a tabulador.

Os deberia crear la tabla de forma automatica, de una fila y 8 columnas.

Si queréis mas información podeis consultar paginas web como estas:

http://falasco.org/guia-definitiva-sublime-text-2

http://html5facil.com/tutoriales/escribe-codigo-como-un-maestro-zen-con-zen-coding-en-sublime-text-2

http://unadocenade.com/una-docena-de-razones-para-utilizar-sublime-text-2/

http://coding.smashingmagazine.com/2013/03/26/goodbye-zen-coding-hello-emmet/

NOTA: Un paquete muy pero que muy util, es el paquete HTML5. Esto os permitira añadir etiquetas html5 de una manera muy pero que muy rapida. Añadirlo igual que hemos añadido el paquete EMMET, pero escribiendo en la busqueda HTML5.

Un saludo!!

Nueva aplicación sobre la serie TRUE BLOOD

Guia de la serie de television TRUE BLOOD (Sangre Fresca), donde podras encontrar informacion sobre toda la serie, asi como sus personajes, historia, y sucesos ocurridos desde la primera hasta la ultima temporada.

Tambien encontraras diferentes imagenes de la serie, y un resumen de todas las temporadas

Ponte al dia sobre los sucesos, o recuerda lo sucedido antes de ver la nueva temporada de TRUE BLOOD

La aplicacion se ira actualizando conforme se vayan emitiendo los diferentes capitulos de las temporadas.

Aplicacion solo en Español

Esta es la dirección:
Espero que os guste!! Un saludo

Primeros pasos con PhoneGap para Android

Esta entrada es para recordarme a mi mismo, como empezar a hacer cosillas con PhoneGap para Android. El tutorial lo he cogido de esta pagina web, y luego lo publicare en Castellano:

http://docs.phonegap.com/en/2.0.0/guide_getting-started_android_index.md.html#Getting%20Started%20with%20Android

Getting Started with Android

This guide describes how to set up your development environment for Cordova and run a sample application. Note that Cordova used to be called PhoneGap, so some of the sites still use the old PhoneGap name.

1. Requirements

  • Eclipse 3.4+

2. Install SDK + Cordova

3. Setup New Project

  • Launch Eclipse, and select menu item New Project
  • Then specify new application project
  • Then speciy an Application Name, a Project Name and Package Name with Namespace
  • Then select a graphic
  • Then Create a Blank Activity
  • Make sure the activity doesn’t inherit from anything. You most likely won’t have PhoneGap on your Eclipse Workspace. Once this is done, click finish
  • In the root directory of your project, create two new directories:
    • /libs
    • assets/www
  • Copy cordova-2.0.0.js from your Cordova download earlier to assets/www
  • Copy cordova-2.0.0.jar from your Cordova download earlier to /libs
  • Copy xml folder from your Cordova download earlier to /res
  • Verify that cordova-2.0.0.jar is listed in the Build Path for your project. Right click on the /libs folder and go to Build Paths/ > Configure Build Path…. Then, in the Libraries tab, add cordova-2.0.0.jar to the project. If Eclipse is being temperamental, you might need to refresh (F5) the project once again.
  • Edit your project’s main Java file found in the src folder in Eclipse:
    • Add import org.apache.cordova.*;
    • Change the class’s extend from Activity to DroidGap
    • Replace the setContentView() line with super.loadUrl(“file:///android_asset/www/index.html”);

  • Right click on AndroidManifest.xml and select Open With > Text Editor
  • Paste the following permissions between the <uses-sdk…/> and <application…/> tags.
    <supports-screens 
       
    android:largeScreens="true"
       
    android:normalScreens="true"
       
    android:smallScreens="true"
       
    android:resizeable="true"
       
    android:anyDensity="true" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.BROADCAST_STICKY" />

    *Note You are adding a blanket list of permissions to your application. You should remove permissions you aren’t using before submitting your application to Google Play.

  • Support orientation changes by pasting the following inside the <activity> tag.
    android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
  • Your AndroidManifest.xml file should look like

4. Hello World

  • Create and open a new file named index.html in the assets/www directory. Paste the following code:
    <!DOCTYPE HTML>
    <html>
    <head>
    <title>Cordova</title>
    <script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script>
    </head>
    <body>
    <h1>Hello World</h1>
    </body>
    </html>

5A. Deploy to Simulator

  • Right click the project and go to Run As > Android Application
  • Eclipse will ask you to select an appropriate AVD. If there isn’t one, then you’ll need to create it.

5B. Deploy to Device

  • Make sure USB debugging is enabled on your device and plug it into your system. (Settings > Applications > Development)
  • Right click the project and go to Run As > Android Application

Done!

Aprendiendo Objetive-C para IOS (Dia 27)

Guion del blog de curso de Objetive-C para IOS – DIA 27
—————————————————————————–
Después de unos dias… volvemos a la carga con XCODE!!!
Vamos a ver esta vez, como crearnos una nueva vista, usando un scrollview, y metiendo una imagen, pero esta vez, queremos poder hacer zoom a la imagen, asi como arrastrar el dedo por la pantalla, y cambiar la ubicacion del archivo de imagen.

Voy a usar un mapa grande de la serie “Juego de Tronos”, que quiero utilizar proximamente en una aplicacion que tengo creada, y que estoy trabajando para actualizarla.
Creamos pues un nuevo proyecto de tipo single view como siempre, y creamos en la vista un UIScrollView
A continuacion, creamos una nueva clase, que sera una subclass de UIViewController, y la llamamos imagenViewController.
Por ultimo, vamos a las propiedades en el storyboard de nuestra vista, y le decimos que la clase es la de nuestro imagenViewController.
Hacemos el outlet de nuestro scrollView, y lo llamamos directamente scrollView
Importamos ahora la imagen del mapa, arrastrando el archivo de imagen a nuestro xcode. La llamaremos image1.jpg
Hasta aqui, solo hemos preparado nuestro proyecto. Vamos ahora con la programacion.
Hay que tener en cuenta, que tengo que arreglarmelas para que la imagen responda ante diferentes gestos del usuario, ya que queremos poder hacer zoom, o poder desplazar la imagen de un lado a otro.
Para eso, me creo una nueva clase que sera una subclase de UIImageView, a la que le daremos las diferentes caracteristicas para que responda ante los TAP del usuario. He usado un codigo de Apple, que esta en su pagina web, y lo he modificado un poquito para nuestros propositos. La clase se llamara TapDetectingImageView
Veamos como quedan los archivos de dicha clase (Fijaos en la explicacion de los comentarios
————-
TapDetectingImageView.h:
————————
@protocol TapDetectingImageViewDelegate;
@interface TapDetectingImageView : UIImageView {
    
    // Variables que agregamos a nuestra clase, para poder detectar los posibles toques.
    CGPoint tapLocation;         // Necesarios para guardar las cordenadas cuando se le da un toque a la pantalla
    BOOL multipleTouches;        // estara puesto a YES, si se le da mas de un toque
    BOOL twoFingerTapIsPossible; // Estara establecido a NO cuando se puedan usar dos toques.
    
}
@property (nonatomic, weak) id <TapDetectingImageViewDelegate> delegate;
@end
/*
 Vamos a definir ahora el protocolo necesario para que la aplicacion responda antes los toques del usuario.
 Implementaremos varios metodos, segun sea nuestro caso.
 */
@protocol TapDetectingImageViewDelegate <NSObject>
@optional
//En el caso de un simple toque
– (void)tapDetectingImageView:(TapDetectingImageView *)view gotSingleTapAtPoint:(CGPoint)tapPoint;
//En el caso de dos toques
– (void)tapDetectingImageView:(TapDetectingImageView *)view gotDoubleTapAtPoint:(CGPoint)tapPoint;
//En el caso de pellizcar la pantalla
– (void)tapDetectingImageView:(TapDetectingImageView *)view gotTwoFingerTapAtPoint:(CGPoint)tapPoint;
@end
————-
TapDetectingImageView.m:
————————
#import “TapDetectingImageView.h”
@implementation TapDetectingImageView
@synthesize delegate;
– (id)initWithImage:(UIImage *)image {
    self = [super initWithImage:image];
    if (self) {
        [self setUserInteractionEnabled:YES];
        
        UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
        UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
        UITapGestureRecognizer *twoFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTwoFingerTap:)];
        
        [doubleTap setNumberOfTapsRequired:2];
        [twoFingerTap setNumberOfTouchesRequired:2];
        
        [self addGestureRecognizer:singleTap];
        [self addGestureRecognizer:doubleTap];
        [self addGestureRecognizer:twoFingerTap];
        
        //SI USAMOS ARC, tenemos que tapar estar lineas, sino las DESTAPAMOS
        //[singleTap release];
        //[doubleTap release];
        //[twoFingerTap release];
    }
    return self;
}
#pragma mark Private
– (void)handleSingleTap:(UIGestureRecognizer *)gestureRecognizer {
    if ([delegate respondsToSelector:@selector(tapDetectingImageView:gotSingleTapAtPoint:)])
        [delegate tapDetectingImageView:self gotSingleTapAtPoint:[gestureRecognizer locationInView:self]];
}
– (void)handleDoubleTap:(UIGestureRecognizer *)gestureRecognizer {
    if ([delegate respondsToSelector:@selector(tapDetectingImageView:gotDoubleTapAtPoint:)])
        [delegate tapDetectingImageView:self gotDoubleTapAtPoint:[gestureRecognizer locationInView:self]];
}
    
– (void)handleTwoFingerTap:(UIGestureRecognizer *)gestureRecognizer {
    if ([delegate respondsToSelector:@selector(tapDetectingImageView:gotTwoFingerTapAtPoint:)])
        [delegate tapDetectingImageView:self gotTwoFingerTapAtPoint:[gestureRecognizer locationInView:self]];
}
    
@end
————-
Ya tenemos creado el archivo necesario para realizar la deteccion de los toques. Vamos ahora con nuestro archivo principal, llamado imageViewController.
————-
//
//  imagenViewController.h
//  Diario027
//
//  Created by david fraj blesa on 06/07/12.
//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//
#import <UIKit/UIKit.h>
//Vemos que establecemos el protocolo UIScrollViewDelegate en la definicion, asi nos obligamos a implementar sus metodos si fuera necesarios
@interface imagenViewController : UIViewController<UIScrollViewDelegate>
//Conectamos el scrollview (Lo hemos realizado directamente, arrastrando con el raton hasta aqui)
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
//Creamos una variable de imagen
@property (retain, nonatomicUIImageView *image;
//Establecemos el metodo que cambiara el tamaño. Acordaos que esto es solo la definicion
– (CGRect)zoomRectForScale:(float)scale withCenter:(CGPoint)center ;
@end
————-
//
//  imagenViewController.m
//  Diario027
//
//  Created by david fraj blesa on 06/07/12.
//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//
#import “imagenViewController.h”
//Debemos importar el archivo TapDetectingImageView.h, para poder usar los gestos
#import “TapDetectingImageView.h”  
//Definimos una CONSTANTE, para cambiar la velocidad del ZOOM
#define ZOOM_STEP 1.5
@implementation imagenViewController
//Hacemos el synthesize de scrollView(Nuestro scroll) y de image(nuestra imagen), para tener asi los getter y los setters.
@synthesize scrollView;
@synthesize image;
– (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}
– (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn’t have a superview.
    [super didReceiveMemoryWarning];
    
    // Release any cached data, images, etc that aren’t in use.
}
#pragma mark – View lifecycle
/*
// Implement loadView to create a view hierarchy programmatically, without using a nib.
– (void)loadView
{
}
*/
/*
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
– (void)viewDidLoad
{
    [super viewDidLoad];
}
*/
– (void)viewDidUnload
{
    //Cuando la vista de descargue, establecemos esto a nil
    [self setScrollView:nil];
    [self setImage:nil];
    
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}
– (void)viewDidLoad {  
    [super viewDidLoad];  
    
    //Cuando carguemos la VIEW, establecemos diferentes parametros de scrollView
    scrollView.bouncesZoom = YES;  
    scrollView.delegate = self;  
    scrollView.clipsToBounds = YES;  
    
    //Creamos la imagen, y le asignamos el mapa.
    image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@”image1.jpg”]];  
    image.userInteractionEnabled = YES;  
    image.autoresizingMask = ( UIViewAutoresizingFlexibleWidth );  
    
    //Añadimos dicha imagen a nuestro scrollView
    [scrollView addSubview:image];  
    
    //Establecemos el tamaño del contenido
    scrollView.contentSize = [image frame].size;  
    
    // añadimos el reconocedor de gestos a la imagen
    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];  
    UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];  
    UITapGestureRecognizer *twoFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTwoFingerTap:)];  
    
    [doubleTap setNumberOfTapsRequired:2];  
    [twoFingerTap setNumberOfTouchesRequired:2];  
    
    [image addGestureRecognizer:singleTap];  
    [image addGestureRecognizer:doubleTap];  
    [image addGestureRecognizer:twoFingerTap];  
    
    //Si estamos usando ARC, tenemos que tener esto tapado, tal como esta aqui
    //[singleTap release];  
    //[doubleTap release];  
    //[twoFingerTap release];  
    
    // Calculamos la escala minima, para fijar la anchura de la imagen, y empezar a escalarla  
     float minimumScale=[scrollView frame].size.width/[image frame].size.width;
     
    //imageScrollView.maximumZoomScale = 1.0;  
    scrollView.minimumZoomScale = minimumScale;  
    scrollView.zoomScale = minimumScale;  
}  
– (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {  
    // Le ponemos return YES, para que soporte el cambio de orientacion 
    return YES;  
}  
#pragma mark UIScrollViewDelegate methods  
– (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {  
    return image;  
}  
#pragma mark TapDetectingImageViewDelegate methods  
//Que pasa si slo le damos una vez
– (void)handleSingleTap:(UIGestureRecognizer *)gestureRecognizer {  
    // al darle solo una vez, no hacemos nada.  
}  
//Que pasa si le damos dos veces
– (void)handleDoubleTap:(UIGestureRecognizer *)gestureRecognizer {  
    // Hacemos zoom
    float newScale = [scrollView zoomScale] * ZOOM_STEP;  
    CGRect zoomRect = [self zoomRectForScale:newScale withCenter:[gestureRecognizer locationInView:gestureRecognizer.view]];  
    [scrollView zoomToRect:zoomRect animated:YES];  
}  
//Que pasa si pellizcamos
– (void)handleTwoFingerTap:(UIGestureRecognizer *)gestureRecognizer {  
    // Al pellizcar la pantalla 
    float newScale = [scrollView zoomScale] / ZOOM_STEP;  
    CGRect zoomRect = [self zoomRectForScale:newScale withCenter:[gestureRecognizer locationInView:gestureRecognizer.view]];  
    [scrollView zoomToRect:zoomRect animated:YES];  
}  
#pragma mark Utility methods  
//Metodo para reescalar
– (CGRect)zoomRectForScale:(float)scale withCenter:(CGPoint)center {  
    
    CGRect zoomRect;  
    
    //Como estamos recibiendo la nueva escala, la usamos para establecer el nuevo rectangulo, que hara el papel de zoom
    zoomRect.size.height = [scrollView frame].size.height / scale;  
    zoomRect.size.width  = [scrollView frame].size.width  / scale;  
    
    // Elegimos el origen correcto, que sera el centro de la pantalla 
    zoomRect.origin.x    = center.x – (zoomRect.size.width  / 2.0);  
    zoomRect.origin.y    = center.y – (zoomRect.size.height / 2.0);  
    
    return zoomRect;  
}  
@end
————-
He comentado todo el codigo para explicar lo que se hace en cada apartado.
Parte del codigo lo he recogido de esta pagina web
Lo malo que en esta web, esta todo en Ingles, y esta programado para la version anterior de XCODE, asi que he tenido que retocarlo un poco, para poder usar asi el ARC
Un saludo a todos!!
————-
nota: Esto es no es curso propiamente dicho, es un diario de autoaprendizaje de objetive-c, que me sirve para afianzar conocimientos, y de paso, tener un diario de referencia, con ejemplos propios de uso del lenguaje.
————-

Como darse de alta de autonomos para impartir clases en diferentes centros de formacion

Hace poco, me he dado de alta de autonomos de nuevo, asi que voy a explicar los pasos que hay que realizar.

Lo primero que debemos hacer es darnos de alta en Censo. Para eso, vamos a esta direccion web, y rellenamos el formulario con el impreso 037 de la siguiente forma:

http://www.agenciatributaria.es/AEAT.internet/Modelos_formularios/modelo_037.shtml

Pinchamos en

 Pinchamos en Continuar, y accedemos al formulario

Apareceran 3 paginas. En la primera, lo unico que debemos rellenar son nuestros datos personales, y marcar la casilla 111, diciendo asi que nos queremos dar de alta en censo

Nos vamos a la segunda hoja
—————————–

Aqui marcamos que queremos realizar la declaracion de renta de forma simplificada, eligiendo la opcion INCLUSION, y escribiendo la fecha de alta correspondiente al inicio de actividad, que suele ser el primer dia del mes.

Marcamos la casilla 500, y le decimos que SI, ya que no estamos obligados a realizar el IVA trimestral.

Marcamos la casilla 502, y le ponemos de nuevo la fecha de alta, indicando asi que queremos iniciar la actividad.

Nos vamos ahora a la hoja 3
—————————–

Rellenamos la informacion correspondiente a la actividad que queremos realizar. En el caso de impartir clases para diferentes centros, podria quedar asi:

Una vez rellenada esta informacion, pinchamos en VALIDAD, y nos dara la opcion de imprimir el impreso que acabamos de rellenar.

Lo imprimimos, y nos vamos a Hacienda.

Aqui en Zaragoza, hay que ir a la calle albareda. Entramos, vamos a la maquina de tickets, cogemos uno para CENSO, y esperamos que nos llamen.

Entregamos el impreso, y nos daran una de las copias (La que pone para el interesado) sellada con la fecha de presentacion.

Nos vamos de alli.

Ahora tenemos que irnos a la tesoreria de la seguridad Social. Al ser de fuera de Zaragoza, a mi me corresponde la tesoreria que esta en la EXPO (Anteriormente en Gran via)

Antes de ir a la tesoreria, es mejor que vayais con una fotocopia del Censo sellado de Hacienda, y de vuestro DNI, asi como llevar el numero de cuenta donde os cargaran las cuotas de Autonomos (Unos 250 Euros mensuales).

Vais a tesoreria, y le decis que venis a daros de alta de autonomos. Os daran un impreso, que tendreis que rellenar alli mismo, con vuestros datos personales, asi como el IAE de la actividad que rellenasteis en Censo, y vuestros datos Bancarios para que os cobren.

Esperais vuestro turno, y llevais todos los papeles. Si no sabeis rellenar algo, no lo hagais, y os ayudaran a terminar de rellenar el impreso.

Si os preguntan si quereis pagar un poco mas por estar asegurados para el desempleo (El famoso PARO de autonomos), yo os recomiendo que NO lo hagais, ya que es un engaño, y no os daran el paro ni de coña (Por experiencia propia). Los autonomos seguimos igual de desprotegidos…. vaya pais.

Y ya estais dados de alta!!!

Un saludo!!!

Aprendiendo Objetive-C para IOS (Dia 26)

Guion del blog de curso de Objetive-C para IOS – DIA 26
—————————————————————————–
Vamos a ver como podemos crear una nueva vista con una imagen que podamos mover usando un ScrollView. Para eso. Necesitaremos una imagen lo suficientemente grande para poder interactuar con ella, y movernos asi a base de arrastrar por la pantalla.

Creamos un nuevo proyecto del tpo Single View Controller.
Agregamos al proyecto un nuevo UIImage.

Con el UIImage seleccionado, podemos ir a editor-> Embed IN-> Scroll View
De esta forma, ya tenemos metida la imagen en el scrollView.
Una vez hecho esto, vamos a centra la imagen de forma adecuada en el scrollview, tal como vemos en la imagen
Tambien le damos la posicion correcta de coordenadas al scrollview, y luego cambiamos el tamaño de este mismo, para que ocupe toda nuestra pantalla
Establecemos el zoom del scrollviewcontroller

Y ampliamos nuestro scrollview, hasta que ocupe toda la pantalla

Una vez hecho esto, tenemos que crear una nueva clase, basandonos en ViewController. Le pongo de nombre miViewController, y desde el storyboard, establezco la clase de mi vista, a miViewController, desde el Identifier

Una vez hecho esto, creamos los outlets en el archivo miViewController.h, de la imagen, y del scrollview, quedando el archivo asi:

//
//  miViewController.h
//  Diario026
//
//  Created by david fraj blesa on 02/07/12.
//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface miViewController : UIViewController<UIScrollViewDelegate>
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@end
———————–
Una vez que tenemos lo outlets, nos habra creado automaticamente los synthesize en el archivo miViewCOntroller.m
En ese archivo, buscamos el metodo viewDidLoad, y sustituimos las lineas tapadas por el codigo siguiente.
————————
– (void)viewDidLoad
{
    [super viewDidLoad];
    
//Le decimos que el delegado del scrollView es el mismo miViewController
    self.scrollView.delegate = self;
//Establecemos que el tamaño del scrollview, es el tamaño de la imagen
    self.scrollView.contentSize = self.imageView.image.size;
//Dibujamos la imagen
    self.imageView.frame = CGRectMake(0, 0, self.imageView.image.size.width, self.imageView.image.size.height);
}
-(UIView *) viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    // Le decimos que vista queremos hacer zoom.
    return self.imageView;
}
————-
Compilamos y ejecutamos, asi que deberia ya funcionar todo.
Un saludo!!!!!
————-
nota: Esto es no es curso propiamente dicho, es un diario de autoaprendizaje de objetive-c, que me sirve para afianzar conocimientos, y de paso, tener un diario de referencia, con ejemplos propios de uso del lenguaje.
————-

Aprendiendo Objetive-C para IOS (Dia 25)

Guion del blog de curso de Objetive-C para IOS – DIA 25
—————————————————————————–
CREANDO UNA APLICACION COMPLETA, Y SUBIENDOLA AL APPSTORE PARTE 7 (FINAL):

Hoy terminamos  de subir la aplicacion al appstore, asi que en estas siete partes dentro del diario, vemos el proceso completo para crear una aplicacion desde cero, hasta subirla al appstore.

Vamos a ello….

Le damos a añadir aplicacion desde nuestro itunes connect, y le decimos fecha de publicacion, asi como tier de precio que le queremos dar. En mi caso elijo FREE.

 Me dira que le ponga informacion sobre la Version, copyright, categoria y subcategoria.

Contestamos diversas preguntas, para darle un ratio de edad a la aplicacion, asi como le ponemos una descripion, unas palablas clave, una direccion de correo y una direccion web de soporte.

Tenemos que subir un icono de la aplicacion de 512×512, y alguna captura del producto en resoluciones de 640×960 por ejemplo.

Guardamos los cambios y vemos un resumen. Le damos aVIEW DETAILS

Ya esta todo listo, asi que le damos a READY TO UPLOAD BINARY, para darle a conocer que estamos preparados para subir la aplciacion

Vamos a Xcode, y desde Build Settings, cambiamos el code signing a DISTRIBUTION, para firmar la aplicacion con nuestro certificado vajado el dia anterior.
 
Vamos al menu product, y elegimos build for -> Buid for archiving

Vamos a producto -> ARCHIVE

Nos llevara al organizador, y debemos pulsar en VALIDATE.

Escribimos nuestras credenciales de usuario y clave y pinchamos en NEXT

Pinchamos de nuevo a NEXT

Tenemos que decirle en este paso, si nuestra aplicacion tiene algo de criptografia. Decimos que no y SAVE

Pinchamos en CONTINUE

Nos dice que todo correcto, asi que pinchamos en finish.

 Una vez que esta en STATUS PASSED VALIDATION, elegimos SUBMIT

 Pinchamos en NEXT para ir al paso siguiente

Aparecera la barra de progreso, como que esta subiendo la aplicacion. Una vez que este subida la apliacion, aparecera como que ha sido subida con exito, y esta lista para revision.


Ahora a esperar una semanita, a ver si apple nos aprueba la aplicacion.

Espero que haya sido de ayuda.

Un saludo!!!

————-
nota: Esto es no es curso propiamente dicho, es un diario de autoaprendizaje de objetive-c, que me sirve para afianzar conocimientos, y de paso, tener un diario de referencia, con ejemplos propios de uso del lenguaje.
————-

Aprendiendo Objetive-C para IOS (Dia 24)

Guion del blog de curso de Objetive-C para IOS – DIA 24
—————————————————————————–
CREANDO UNA APLICACION COMPLETA, Y SUBIENDOLA AL APPSTORE PARTE 6:

Vamos a ver como crear y descargar los certificados necesarios, para probar nuestra aplicacion en nuestro mobil, y dejarla preparada para poder subirla al appstore

Nos conectamos desde la web de desarrollador de apple

 Vamos al apartado IOS PROVISIONING PORTAL, y creamos un nuevo APP ID:

 Rellenamos la informacion, tal como el nombre de la aplicacion, asi como un Bundle Unico:

Vamos al apartado provisioning, y creamos un nuevo certificado para desarrollo:

Le ponemos un nombre. Como es un nombre para pruebas, yo siempre le pongo la palabra detras de BETA, de esa manera se que es de pruebas para desarrollo.

Eligo el certificado para firmar y el appid creado anteriormente.

Le digo tambien bajo que dispositivo probare.

Una vez creado, lo descargo pinchando en download.

Y doble click para instalarlo!!

Repito el proceso para Distribucion. Aqui no me dira que elija el dispositivo, ya que sera para el app store

Si el nombre de mi aplicacion es demasiado grande, puedo cambiarlo desde la propiedad dentro del apartado INFO de Bundle display name:

 Y eso es todo por hoy!!! mañana veremos como subir la aplicacion definitivamente al appstore!

un saludo a todos!

————-
nota: Esto es no es curso propiamente dicho, es un diario de autoaprendizaje de objetive-c, que me sirve para afianzar conocimientos, y de paso, tener un diario de referencia, con ejemplos propios de uso del lenguaje.
————-

Aprendiendo Objetive-C para IOS (Dia 23)

Guion del blog de curso de Objetive-C para IOS – DIA 23
—————————————————————————–
CREANDO UNA APLICACION COMPLETA, Y SUBIENDOLA AL APPSTORE PARTE 5:
Vamos a ver ahora como podemos agregarle un poco de publicidad a nuestra aplicacion. Para esto, tenemos que irnos al storyboard, y añadimos los iAds arrastrando y soltando.
Asi de facil??? Pues aun tenemos que hacer ciertas cosillas…..

Tenemos que agregar a nuestra aplicacion, el framework correspondiente para poder usar iads, ya que sino la aplicacion no funcionaria, ya que no 
encontraria las librerias adecuadas.
Seguimos los siguientes pasos.

Vamos a nuestra pestaña principal del proyecto, y vamos a BUILD PHASES
elegimos la linea de “LINK BINARY WITH LIBRARIES”
Pulsamos el boton +, y añadimos la libreria iAd.framework

Una vez echo esto, vamos a los archivos .h siguientes:
principalViewCOntroller.h, intruccionesViewCOntroller.h y informeViewController.h, e importamos las librerias mediante:
#import <iAd/iAd.h>
Ademas de importarlo, vamos a agregar el protocolo, a cada uno de los interfaces, de manera que tenemos que añadir el protocolo <ADBannerViewDelegate> a 
los archivos principalViewCOntroller.h, intruccionesViewCOntroller.h y informeViewController.h
Por ejemplo, en principalViewController.h sustituimos esto:
@interface principalViewController : UIViewController{ 
por esto otro
@interface principalViewController : UIViewController<ADBannerViewDelegate>{
NOTA: Lo mismo en instruccionesViewCOntroller.h y informeViewCOntroller.h
————-
Una vez terminada la publicidad, solo nos queda añadir a nuestro proyecto los iconos y las imagenes iniciales de nuestra aplicacion. Para eso necesitamos 5 imagenes
Para Icono: Imagen de 57×57
Para Icono Retina: Imagen de 114×114
Para Imagen Inicial: Imagen 320×480
Para imagen Inicial Retina: Imagen de 640×960
Para ICono de Appstore (Se usara mas adelante): Imagen de 512×512
————-
Cuando tengamos las imagenes, vamos a nuestra pantalla inicial del proyecto, y lo unico que hacemos es arrastrar cada imagen a su sitio

Y eso es todo por hoy!!!
Mañana repasaremos como crear los certificados para desarrollo y distribucion, y probaremos nuestra aplicacion en nuestro iphone!
Un saludo!
————-
nota: Esto es no es curso propiamente dicho, es un diario de autoaprendizaje de objetive-c, que me sirve para afianzar conocimientos, y de paso, tener un diario de referencia, con ejemplos propios de uso del lenguaje.
————-

Aprendiendo Objetive-C para IOS (Dia 22)

Guion del blog de curso de Objetive-C para IOS – DIA 22
—————————————————————————–
CREANDO UNA APLICACION COMPLETA, Y SUBIENDOLA AL APPSTORE PARTE 4:
Vamos a ver hoy como al pinchar en el boton de arriba a la derecha de nuestra vista principal, abrimos informacion sobre la aplicacion.
Para eso, creamos una nueva clase basada en UIVIewCOntroller, y la llmaremos intruccionesViewController.

Vamos al view controller de nuestra vista, y cambiamos el class identifier por instruccionesViewController
El segue ya esta creado desde el boton de arriba a la derecha, si no fuera asi, lo creamos usando la tecla de CTRL
Creamos el outlet del UIWebView

Veamos como queda el .h y el .m
//
//  instruccionesViewController.h
//  Metabolismo Basal
//
//  Created by david fraj blesa on 26/06/12.
//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface instruccionesViewController : UIViewController{
    
}
@property (weak, nonatomic) IBOutlet UIWebView *wvInstrucciones;
@end
————-
//
//  instruccionesViewController.m
//  Metabolismo Basal
//
//  Created by david fraj blesa on 26/06/12.
//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//
#import “instruccionesViewController.h”
@implementation instruccionesViewController
@synthesize txtIntrucciones;
@synthesize wvInstrucciones;
– (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}
– (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn’t have a superview.
    [super didReceiveMemoryWarning];
    
    // Release any cached data, images, etc that aren’t in use.
}
#pragma mark – View lifecycle
/*
// Implement loadView to create a view hierarchy programmatically, without using a nib.
– (void)loadView
{
}
*/
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
– (void)viewDidLoad
{
    [super viewDidLoad];
    //ESTO ES LO UNICO QUE TENEMOS QUE TENER EN CUENTA, YA QUE AQUI SE PONDRA EL CODIGO HTML NECESARIO
    [wvInstrucciones loadHTMLString:@”aqui el codigo en HTML” baseURL:nil];
    
    
    
}
– (void)viewDidUnload
{
    [self setTxtIntrucciones:nil];
    [self setWvInstrucciones:nil];
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}
– (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
————-
Y con esto ya tenemos lista nuestra apliacion!!!
Mañana retoques finales!!
————-
nota: Esto es no es curso propiamente dicho, es un diario de autoaprendizaje de objetive-c, que me sirve para afianzar conocimientos, y de paso, tener un diario de referencia, con ejemplos propios de uso del lenguaje.
————-