iCulture forum | iPhone, iPad,  iPod touch, Apple TV en iOS

iCulture forum | iPhone, iPad, iPod touch, Apple TV en iOS (https://forum.iculture.nl/)
-   Ontwikkelen voor iOS (https://forum.iculture.nl/f133/development/f58/ontwikkelen-voor-ios/)
-   -   Hoe speel ik mijn video in Landscape?! (https://forum.iculture.nl/f133/development/f58/ontwikkelen-voor-ios/76846-speel-mijn-video-landscape.html)

Zaankantertje75 03-11-10 16:47

Hoe speel ik mijn video in Landscape?!
 
Beste lezer,

Ik heb een video in mijn applicatie maar hij speelt af in portrait.

Ik dacht dat video's sowieso standaard Landscape afspeelde?

Ik maak de video met deze code:

Code:

- (IBAction)playMovie:(id)sender
{
        NSBundle *bundle = [NSBundle mainBundle];
        NSString *moviePath = [bundle pathForResource:@"BAZO" ofType:@"m4v"];
        NSURL *movieURL = [[NSURL fileURLWithPath:moviePath] retain];
        MPMoviePlayerController *theMovie = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
       
        theMovie.scalingMode = MPMovieScalingModeAspectFill;
        [theMovie play];
        /*NSString *filepath = [[NSBundle mainBundle] pathForResource:@"BAZO" ofType:@"m4v"];
        NSURL *fileURL = [NSURL fileURLWithPath:filepath];
        MPMoviePlayerController *moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];
       
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlaybackComplete:)name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayerController];
       
        [self.view addSubview:moviePlayerController.view];
        moviePlayerController.fullscreen = YES;
        //Uncomment om beeld formaat aan te passen
        //moviePlayerController.scalingMode = MPMovieScalingModeAspectFill;
        [moviePlayerController play];
        */
       
}

Ik heb deze code gebruikt om het toch in landscape te krijgen:

Code:

[MPMoviePlayerController setOrientation:UIDeviceOrientationLandscapeLeft animated:NO];

Maar dan krijg ik deze warning : 'MPMoviePlayerController' may not respond to '-setOrientation:animated:'

En als ik dan op me cell druk om e video te openen crashed de applicatie.

Iemand die weet hoe dit op te lossen is ? vind er maar weinig over op google.

Alvast bedankt.

Bram

Hollance 03-11-10 21:00

Je kunt beter MPMoviePlayerViewController gebruiken ipv de MPMoviePlayerController. Wil je toch de laatste gebruiken, dan zul je zijn view een kwartslag moeten roteren.

Zaankantertje75 04-11-10 09:49

Citaat:

Oorspronkelijk geplaatst door Hollance (Bericht 595721)
Je kunt beter MPMoviePlayerViewController gebruiken ipv de MPMoviePlayerController. Wil je toch de laatste gebruiken, dan zul je zijn view een kwartslag moeten roteren.

Hee thanks!

Dat werkt niet echt lekker aangezien ik veel codes heb gebruikt die zich richten op MPMoviePlayerController...

Als ik die en kwartslag draai. gaat besturing dan ook mee? zoals done en pauze?

Is her geen simpele lijn code die mijn video in landscape kan zetten. snap er niks van ;S

Thanks voor je hulp!

TUX2K 04-11-10 11:11

MPMoviePlayerViewController gebruikt MPMoviePlayerController hij is gewooon het zelde, enkel dan met controls als volume en play/stop en een mooie done knop.

Maar MPMoviePlayerViewController is een iOS 4.* control en dus niet beschikbaar op iOS 3.* houdt daar dus wel rekening mee als je je app ook target voor iOS 3.*

Zaankantertje75 04-11-10 11:18

Citaat:

Oorspronkelijk geplaatst door TUX2K (Bericht 595917)
MPMoviePlayerViewController gebruikt MPMoviePlayerController hij is gewooon het zelde, enkel dan met controls als volume en play/stop en een mooie done knop.

Maar MPMoviePlayerViewController is een iOS 4.* control en dus niet beschikbaar op iOS 3.* houdt daar dus wel rekening mee als je je app ook tager voor iOS 3.*

Ik heb al die fancy controls bij me video en gebruik geen MPMoviePlayerViewController :P

Maar idd mijn app moet beschikbaar zijn voor minimaal 3gs en 4 ofcours.

thanks

Nikooos 04-11-10 20:43

3gs en 4 is wat anders als firmware 3.x en iOS4.

Zaankantertje75 05-11-10 11:05

iemand die weet hoe je het beste alles in een keer landscape left krijgt??

JNikoy 07-11-10 17:28

Als je aangeeft dat de view waarin je de MPMoviePlayerViewController weergeeft roteerbaar is

Code:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
 // orientaties
}

zou dit gewoon moeten werken (Geen idee in hoeverre dit ook werkt met een MPMoviePlayerController)

Zaankantertje75 08-11-10 14:20

Citaat:

Oorspronkelijk geplaatst door JNikoy (Bericht 597290)
Als je aangeeft dat de view waarin je de MPMoviePlayerViewController weergeeft roteerbaar is

Code:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
 // orientaties
}

zou dit gewoon moeten werken (Geen idee in hoeverre dit ook werkt met een MPMoviePlayerController)

Seriues ik heb geen idee.. ik sanp er niks van.. normaal gesproken gaat hij toch automatisch in landscape?

heb verschillende dingen geprobeerd zefs deze code:

Code:

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES];
       
    // Rotate the view for landscape playback
    [[self view] setBounds:CGRectMake(0, 0, 480, 320)];
    [[self view] setCenter:CGPointMake(160, 240)];
    [[self view] setTransform:CGAffineTransformMakeRotation(M_PI / 2)];


NSString *filepath = [[NSBundle mainBundle] pathForResource:@"00 01. Welcome" ofType:@"mov"];
        NSURL *fileURL = [NSURL fileURLWithPath:filepath];
        MPMoviePlayerController *moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];
       

        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlaybackComplete:)name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayerController];
        //[MPMoviePlayerController setOrientation:UIDeviceOrientationLandscapeLeft animated:NO];
        //[moviePlayerController setOrientation:UIDeviceOrientationLandscapeLeft animated:NO]

       
        // Set frame of movie player
    [[moviePlayerController view] setFrame:CGRectMake(0, 0, 480, 320)];


Dan lukt het me om het device te draaien zegmaar en de status balk gaat in landscape.. Maar me video en het framework blijven in portrait. en als ik dna op done klik is me lijst in landscape... ben er in de war van

Zaankantertje75 10-11-10 14:19

Ik heb mijn probleem een soort van opgelost met deze code:

Code:

-(BOOL)shouldAutorotateToSecondInterfaceOrientation:(UIInterfaceOrientation)toSecondInterfaceOrientation
{
        return UIInterfaceOrientationIsLandscape(toSecondInterfaceOrientation);
       
       
}

Alleen doet hij het niet automatisch ik moet hem zeg maar landscape draaien en dan doet ie het wel :)

Mijn vraag dus.. iemand die weet hoe het te automatiseren met deze code?

TX

TUX2K 11-11-10 15:25

Volgens mij heeft apple liever niet dat je via code de oriëntatie van je iPhone wijzigt.
De nieuwe MovieplayerViewController werkt automatisch ook in landscape mode.
De gebruik hoeft hem dus alleen maar zelf even te draaien en wordt hier door niet geforceerd zijn iPhone te draaien als hij dat niet wil.
Dat is wel zoo gebruikers vriendelijk.

Als je echt je film wilt afspelen in landscape dan zou je misschien een moviePlayerView via een layer 90 graden kunnen draaien en die view dus fullscreen tonen.
Is wel veel werk.

Zaankantertje75 11-11-10 15:36

Citaat:

Oorspronkelijk geplaatst door TUX2K (Bericht 599079)
Volgens mij heeft apple liever niet dat je via code de oriëntatie van je iPhone wijzigt.
De nieuwe MovieplayerViewController werkt automatisch ook in landscape mode.
De gebruik hoeft hem dus alleen maar zelf even te draaien en wordt hier door niet geforceerd zijn iPhone te draaien als hij dat niet wil.
Dat is wel zoo gebruikers vriendelijk.

Als je echt je film wilt afspelen in landscape dan zou je misschien een moviePlayerView via een layer 90 graden kunnen draaien en die view dus fullscreen tonen.
Is wel veel werk.

Oké thanks voor je antwoord. Ben ook niet van plan om dat tweede wat jij zei te doen :P... Ik heb wel nagedacht over dat nieuwe van MoviePlayerViewController ... Maar ik ben nieuw bij dit.

En snap er dus eigenlijk vrij weinig van :( Daarom lostte ik het zo op eerlijk gezecht :P

Whacko 12-11-10 11:27

Citaat:

Oorspronkelijk geplaatst door Zaankantertje75 (Bericht 598612)
Ik heb mijn probleem een soort van opgelost met deze code:

Code:

-(BOOL)shouldAutorotateToSecondInterfaceOrientation:(UIInterfaceOrientation)toSecondInterfaceOrientation
{
    return UIInterfaceOrientationIsLandscape(toSecondInterfaceOrientation);
   
   
}

Alleen doet hij het niet automatisch ik moet hem zeg maar landscape draaien en dan doet ie het wel :)

Mijn vraag dus.. iemand die weet hoe het te automatiseren met deze code?

TX

Het is heel logisch dat het alleen werkt wanneer je je iphone kantelt. De method "shouldAutorotateToSecondInterfaceOrientation:" wordt namelijk aangeroepen wanneer je je iphone kantelt. (dat staat ook gewoon in de documentatie).

Wat je nog kunt proberen is de orientatie van het device te veranderen:
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscape];

alle views die dan openen, krijgen dan volgens mij die orientatie mee.

Zaankantertje75 12-11-10 11:30

Citaat:

Oorspronkelijk geplaatst door Whacko (Bericht 599399)
Het is heel logisch dat het alleen werkt wanneer je je iphone kantelt. De method "shouldAutorotateToSecondInterfaceOrientation:" wordt namelijk aangeroepen wanneer je je iphone kantelt. (dat staat ook gewoon in de documentatie).

Wat je nog kunt proberen is de orientatie van het device te veranderen:
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscape];

alle views die dan openen, krijgen dan volgens mij die orientatie mee.

ok, Ja die heb ik al eens gebruikt klopt is niet hellemaal wat ik wilde.

Ik ben tevreden met hoe het nu is zo laat ik het.. in Iedergeval bedankt voor je moeite en tijd!

Zijn er ook nog mensen die weten hoe ik dit oplos?

Als ik op done klik.. Moet mijn view weer naar portrait kunnen.

Maar dat doet hij niet.. zowel als automatisch niet als handmatig niet.

Iemand die weet hoe dat moet via deze methode?

TUX2K 12-11-10 11:32

Kijk hier wel mee uit want:
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscape];
is een private method en dus niet toegestaand om te gebruiken door Apple in appstore apps.

Zaankantertje75 12-11-10 11:45

Citaat:

Oorspronkelijk geplaatst door TUX2K (Bericht 599404)
Kijk hier wel mee uit want:
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscape];
is een private method en dus niet toegestaand om te gebruiken door Apple in appstore apps.

gebruik hem ook niet meer!

Zaankantertje75 12-11-10 11:46

Inmiddels is de hoofd vraag al opgelost.

Alleen zou ik graag willen weten hoe hij dan ook weer in portrait gaat als ik op Done klik.

thanks

Nikooos 15-11-10 08:55

Is het dan niet handig dat je je oplossing ook even meld?

Zaankantertje75 15-11-10 10:14

Citaat:

Oorspronkelijk geplaatst door psychonikeo (Bericht 600520)
Is het dan niet handig dat je je oplossing ook even meld?

Code:

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
        return UIInterfaceOrientationIsLandscape(toInterfaceOrientation);
}

Gewoon deze code.

Zaankantertje75 18-11-10 14:36

Dus als ik me iPhone in landscape draai. Gaat mijn view naar landscape.

Maar als ik hem dan weer in portrait draai. Dan blijft hij in landscape.

Ik moet hem dus ook gewoon weer portrait krijgen als ik hem portrait draai.

Zal wel 1 simpele lijn code zijn. maar weet niet welke ;p


Alle tijden zijn GMT +2. Het is nu 22:12.