Hvordan kontrollere visningen i din iPad App

September 8  by Eliza

Når du oppretter din iPad app, må du ta med kode som styrer visningen i det programmet. Følgende eksempel iPad app er laget for å vise ord som ruller nedover skjermen. Etter åpning av DeepThoughtsViewController.m filen slik at den vises i teksteditor, vil du sette inn koden i fet skrift (koden som ikke er i fet skrift er levert av Vis-basert applikasjon mal):

#import "DeepThoughtsViewController.h"
#import "Constants.h"
implementation DeepThoughtsViewController
synthesize hastighet, bildeVis;
#pragma mark -
#pragma mark Vis livssyklus
/ *
// Den utpekte initializer. Styre å utføre oppsett som er nødvendig før visningen er lastet.
- (Id) initWithNibName: (NSString *) nibNameOrNil bundle: (NSBundle *) nibBundleOrNil {
if (selv = [super initWithNibName: nibNameOrNil bundle: nibBundleOrNil]) {
// Custom initialisering
}
tilbake selv;
}
* /
/ *
// Implementere loadView å skape et hierarki utsikt programmatisk, uten å bruke en spiss.
- (Void) loadView {
}
* /
/ *
// Implementere viewDidLoad å gjøre ekstra oppsett etter lasting utsikten, typisk fra en spiss.
- (Void) viewDidLoad {
[Super viewDidLoad];
}
* /
- (Void) viewDidLoad {

[Super viewDidLoad];
[NSTimer scheduledTimerWithTimeInterval: 0,5 mål: selvvelger:selector (onTimer) Userinfo: null gjentar: JA];
if ([[NSUserDefaults standardUserDefaults] objectForKey: kWordsOfWisdom]) {
[[NSUserDefaults standardUserDefaults] setObject: @ "Peace Love Groovy Music" Forkey: kWordsOfWisdom];
fallingWords = @ "Peace Love Groovy Music";
}
else {
fallingWords = [[NSUserDefaults standardUserDefaults] stringForKey: kWordsOfWisdom];
}
if ([[NSUserDefaults standardUserDefaults] objectForKey: kSpeed]) {
[[NSUserDefaults standardUserDefaults] setDouble: 10,0 Forkey: kSpeed];
speed = kMaxSpeed-10.0;}
else {
speed = kMaxSpeed ​​- [[NSUserDefaults standardUserDefaults] doubleForKey: kSpeed];
}
}
#pragma mark -
#pragma mark Animasjon
- (Void) onTimer {

UILabel * fallingImageView = [[UILabel alloc] initWithFrame: CGRectMake (0, 0, 100, 30)];
fallingImageView.text = fallingWords;
fallingImageView.textColor = [UIColor purpleColor];
fallingImageView.font = [UIFont systemFontOfSize: 30];
fallingImageView.backgroundColor = [UIColor clearColor];

fallingImageView.adjustsFontSizeToFitWidth = JA;

int startx = runde (tilfeldig ()% 400);
int endX = runde (tilfeldig ()% 400);
// Hastighet for å falle
dobbel randomSpeed ​​= (1 / runde (tilfeldig ()% 100) 1) * hastighet;
// Bildestørrelse;
dobbel scaleH = (1 / runde (tilfeldig ()% 100) 1) * 60;
dobbel scaleW = (1 / runde (tilfeldig ()% 100) 1) * 200;

[Self.view addSubview: fallingImageView];

fallingImageView.frame = CGRectMake (startx, -100, scaleW, scaleH);

fallingImageView.alpha = 0,75;

[UIView beginAnimations: null sammenheng: fallingImageView];
[UIView setAnimationDuration: randomSpeed];
[UIView setAnimationDelegate bolig:];
[UIView setAnimationDidStopSelector:selector (animationDone: ferdig: sammenheng :)];

fallingImageView.frame = CGRectMake (endX, self.view.frame.size.height, scaleW, scaleH);


[UIView commitAnimations];
}
- (Void) animationDone: (NSString *) animationID ferdig: (NSNumber *) ferdig sammenheng: (id) sammenheng {
UIImageView * fallingImageView = sammenheng;
[FallingImageView removeFromSuperview];
[FallingImageView utgivelsen];
}
#pragma mark -
#pragma mark Controls
- (IBAction) innstillinger {
}
#pragma mark -
#pragma mark Orientering
// Styr å tillate at andre enn standard stående orientering.
- (BOOL) shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation {
returnere JA;
}
#pragma mark -
#pragma mark minnehåndtering
- (Void) didReceiveMemoryWarning {
// Utgivelser visningen, hvis den ikke har en superview.
[Super didReceiveMemoryWarning];
// Slipp noen bufrede data, bilder, etc som ikke er i bruk.
}
- (Void) viewDidUnload {
// Slipp noen beholdt subviews av hovedvisningen.
// F.eks self.myOutlet = null;
}
- (Void) dealloc {
[Super dealloc];
}
end

Her er en oversikt over koden du legge til:

  • Den første setningen du legger importen den Constants.h fil. Du kan nå bruke noen taster du satt opp med NSUserDefaults i den påfølgende kode for å hente brukerinnstillingene.
  • Objective-C skaper tilgangsmetoder du trenger for deg når du inkluderer ensynthesize uttalelse; setningen i foregående kode oppretter en tilgangsmetode for hverproperty erklæring (hastighet og bildeVis).
  • De to # pragma mark uttalelser inneholde initialisering og last-view-kode.
  • Den viewDidLoad meldingen sendes rett etter visningen har blitt lastet fra NIB-filen (den .xib fil du kan endre i Interface Builder). Dette er stedet hvor du setter inn koden din for visning initialisering, som i dette tilfellet betyr å vise DeepThoughts 'fallende ord. Den viewDidLoad metode du satt starter ut ved å sette opp en timer for intervallet mellom hver visning av fallende ord.

    Du bruker NSTimer klassen til å lage tidtakere. En timer venter til et visst tidsintervall har gått ut og deretter branner, sende en spesifisert melding til et mål objekt. Denne koden bruker scheduledTimerWithTimeInterval: target: Velger: Userinfo: gjentar: class metode for å skape tidtakeren og planlegge det på dagens løp sløyfe i standardmodus. Intervallet er 0,5 sekunder, målet er selvtillit, og velgeren er meldingen som skal sendes til målet når tidtakeren branner - i dette tilfellet, onTimer. Userinfo er brukerinfo for timeren (satt til null), og timeren er satt til å gjenta - det vil si, vil det gjentatte ganger planlegge seg til ugyldig.

  • Deretter sjekker koden for å se om kWordsOfWisdom innstillingen har blitt flyttet inn NSUserDefaults.
  • Koden flytter brukerens preferanser inn NSUserDefaults bare etter at søknaden går for første gang. Hvis innstillingene ikke er blitt flyttet inn NSUserDefaults ennå, bruker koden den opprinnelige preferanseverdi ("Peace Love Groovy Music") for fallingWords. Hvis innstillingene har blitt flyttet inn NSUserDefaults, leser koden dem inn og deretter setter fallingWords til hva brukerens preferanser er. Koden deretter gjentar denne sjekken med hastighetsinnstilling.

    Du bruker standardUserDefaults (en NSUserDefaults klasse metode) for å få tilgang til standard brukerinnstillinger, og du kan lagre data der.

  • De #pragma mark avsnittet Controls omfatter plassholder innstillinger metoden for tilkobling av lys Info-knappen til visningen kontrolleren. Dette er handlingen metoden bruker IBAction kvalifiseringen.
  • Tilkobling timeren til selve tegningen av skjermen er det onTimer metoden. Den UILabel klassen implementerer en skrivebeskyttet tekstvisning. Du kan bruke denne klassen til å tegne en eller flere linjer med statisk tekst. I dette tilfellet er blokken av koden bruker initWithFrame metoden med CGRectMake å skape et rektangel, med x-koordinat og y-koordinat for rektangelet opprinnelse punktet (0, 0) og en bestemt bredde og høyde (100, 30) .
  • Koden konverterer fallingWords strengen til fallingImageView for display; setter opp tekstfarge, skrifttype og bakgrunnsfarge; og justerer skriftstørrelsen for bredden. Skrift og textColor egenskaper gjelder for hele tekststreng.
  • Neste blokk med kode bruker tilfeldig funksjon for start- og sluttidspunkter (startx og endX), for hastighet, og for bredden (scaleW) og høyde (scaleH) for fallingImageView.
  • Den beginAnimations: kontekst: metode starter animasjonen blokk, og den commitAnimations metoden slutter blokken. Inne i blokken, setter kode eiendomsverdier å gjøre visuelle endringer som utgjør animasjon.
  • Den setAnimationDuration metoden setter animasjonen varighet, og setAnimationDidStopSelector setter melding å sende til animasjon delegat når animasjonen stopper. Animasjonen delegat er animationDone, som bruker removeFromSuperview (en instansmetode av UIView klasse) for å fjerne fallingImageView og deretter bruker utgivelsen (en instansmetode av NSAutoreleasePool klasse) for å frigjøre fallingImageView.
  • Endelig har denne koden to # pragma mark utsagn for å markere delen som Orientering og to # pragma mark uttalelser over didReceiveMemoryWarning metode for å markere den delen som Memory Management.