Freitag, 27. Juli 2012

Horizontaler UITableView (Trick)

Einleitung
Wer hat sich als iOS Entwickler noch nicht gefragt warum die UITableView nur vertikal scrollt?! ...
Es wäre doch super wenn sie das auch horizontal könnte. Ein kleiner Trick den ich im Netz gefunden habe macht die UITableView auch horizontal Scrollbar.

Funktionsweise
Die Tabelle wird um 90 Grad gedreht (auf die Seite gekippt), damit die Zellen aber nicht auch auf der Seite liegen werden diese wieder zurück gedreht.

Schritt 1:
Normalen ViewController anlegen der von UITableViewController erbt.

Schritt 2:
in der ViewDidLoad folgende zeilen eintragen um die Tabelle zu drehen


- (void)viewDidLoad
{
    [super viewDidLoad];
    
    const CGFloat k90DegreesCounterClockwiseAngle = (CGFloat) -(90 * M_PI / 180.0);
    CGRect frame = tableV.frame;
    tableView.transform = CGAffineTransformRotate(CGAffineTransformIdentity, k90DegreesCounterClockwiseAngle);
    tableView.frame = frame; 
}


Schritt 3:
In der Methode in der die UITableCellView erzeugt und konfiguriert wird die Zelle drehen

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    
    if (!cell) 
    {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }    

    CGFloat k90DegreesClockwiseAngle = (CGFloat) (90 * M_PI / 180.0);    
    cell.transform = CGAffineTransformRotate(CGAffineTransformIdentity, k90DegreesClockwiseAngle);
    
   //your cell init here
    //.....................
    
    return cell;
}



Die Zellenbreite kann über die folgende Methode (die eigentlich für die Höhe zuständig ist) konfiguriert werden. In dem Codebeispiel gebe ich die Breite des Bildschirms zurück... so ist die Cell immer genau so breit wie eine Bildschirmbreite...

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return self.view.bounds.size.width;
}

Mittwoch, 25. Juli 2012

iPhone Bedienung mal anders

Einleitung

Wer das iPhone kennt weiß so ziemlich schnell wie es zu bedienen ist. Das ist dem Bedienkonzept von Apple zuzuschreiben. Dieses ist in seine Navigationsstrukturen auch recht Übersichtlich. Mir persönlich wird es immer schnell langweilig wenn ich die 1000 App mit einer TabBar oder NavigationBar sehe. Deshalb habe ich neues Bedienkonzept gebaut welches mal ein wenig mehr Abwechslung bringen soll.

Video
Funktionsweise


Der Grundaufbau besteht aus einem eigenen neuen Controler Typ den ich TileViewController nenne. Er kann eigentlich unendlich viele Unterviewcontroller beherbergen ähnlich wie z.B. ein TabViewController.
Nach dem Initialisieren des TileViewControllers fügt man ihm lediglich seine gewünschten ViewController hinzu und gibt für jeden ViewController die Zeile an in der er dargestellt werden soll. Die Kachelgrößen werden dann automatisch vom TileViewController zugewiesen. 


Im Pseudocode sieht das ungefähr so aus:


[tileviewController addViewController:vc1 inRow:0];
[tileviewController addViewController:vc2 inRow:0];
[tileviewController addViewController:vc3 inRow:1];
[tileviewController addViewController:vc4 inRow:2];

Und schon haben wir folgende Zeilen:
Zeile 1: vc1;vc2
Zeile 2: vc3
Zeile 3: vc4

Wer Code sehen möchte kann mich gerne in den Kommentaren fragen ... Gruß Maurice
Wanna see code? ask me via comments