Изгледът с наслагване на камерата не променя пейзажната ориентация (ляво и дясно) в iPhone4?

Персонализирах камерата с персонализирани бутони (UIButton) чрез изглед с наслагване. Моето приложение за iPhone ще работи само в пейзажен режим (ляво и дясно). Сега изгледът на наслагването на камерата ми променя перфектно ориентацията си наляво и надясно в iPhone 3GS, но не работи ясно в iPhone4. В ios5, ако стартирам камерата с изглед с наслагване в пейзажен режим (дясно/ляво), тя стартира перфектно, но ако сменя ориентацията на (Дясно -> Ляво / Ляво -> Дясно), изгледът с наслагване не променя перфектно размера на рамката на Размерите на рамката на UIView(CameraOverlayView),UIButton се променят. Как мога да го поправя? Моля, помогнете ми да отстраня този проблем. Надявам се вие ​​моите приятели да решите проблема ми. Благодаря предварително. Тук прикачих кода си, който използвах.

  UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

if(orientation == UIDeviceOrientationLandscapeLeft)
{
    CGAffineTransform transform = self.view.transform;
    transform = CGAffineTransformRotate(transform, (M_PI / 2.0));
    imgpicker.cameraOverlayView.transform = transform;
    NSLog(@"Orientation Landscape Left");
} 
else if(orientation == UIDeviceOrientationLandscapeRight)
{
    imgpicker.cameraOverlayView.transform = CGAffineTransformRotate(CGAffineTransformIdentity, 117.81);
    NSLog(@"Orientation Landscape Right");
}

Този код работи добре в iPhone#GS(ios4), но не работи добре в iPhone4(ios5). Може ли някой да ми помогне да отстраня този проблем?


person Yuvaraj.M    schedule 07.12.2011    source източник


Отговори (1)


Благодаря ви приятели. Реших този проблем сам. Току-що зададох границите на UIView, така че да покрива пълния изглед на Camera OverlayView, а също така опитах горния код, който споменах във въпроса си.

     cameraview.bounds = CGRectMake(0.0, 0.0, 480.0f, 320.0f); 

И така проверих този код в началото на стартирането на камерата,

UIInterfaceOrientation orientation= [[UIApplication sharedApplication] statusBarOrientation];
    if (orientation == UIInterfaceOrientationLandscapeLeft) 
    {
        imgpicker.cameraOverlayView.transform = CGAffineTransformRotate(CGAffineTransformIdentity,117.81);
    }
    else if (orientation == UIInterfaceOrientationLandscapeRight)
    {        
        CGAffineTransform transform = self.view.transform;
        transform = CGAffineTransformRotate(transform, (M_PI/2.0));
        imgpicker.cameraOverlayView.transform = transform;
    } 

След това проверих това условие и в UIDeviceOrientation Notification. Сега моето приложение работи чар. Благодаря.

person Yuvaraj.M    schedule 19.01.2012
comment
Създадох персонализирана камера и екранът на живо се зарежда добре в портретен режим. Но когато го променя на пейзажен режим, получавам тази грешка в конзолата CGAffineTransformInvert: сингулярна матрица. Опитах се да използвам маска за автоматично преоразмеряване за промяна на ориентацията на екрана на живо, но не помага. - person The X-Coder; 19.03.2013
comment
Здравейте...оправих ориентацията и аз също се сблъсках със същия проблем, с който се сблъскахте по-рано. Можете ли да ми помогнете с моя проблем? - person The X-Coder; 27.03.2013