2015-07-15 5 views
0

Как загрузить UIViewController с прозрачным цветом фона? Так что предыдущий контроллер просмотра может быть виден. Я попытался создать пользовательский вид ниже, но он не работает.Как загрузить UIViewController с прозрачным цветом фона?

- (void)drawRect:(CGRect)rect 
{ 
    // Drawing code 
    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    CGContextSaveGState(ctx); 
    { 
     CGColorRef colorRef=[UIColor clearColor].CGColor; 
     CGContextSetFillColorWithColor(ctx, colorRef); 
//  CGColorRelease(colorRef); 
     CGContextFillRect(ctx, rect); 
    } 
    CGContextRestoreGState(ctx); 
} 

Любая помощь будет заметна!

+1

вы не должны использовать DrawRect вообще. UIView имеет свойство backgroundColor, которое вы можете установить на '[UIColor clearColor]' –

+1

UIView имеет непрозрачное свойство, которое по умолчанию имеет значение YES. попробуйте установить значение НЕТ – Bamsworld

ответ

1

Вы можете сделать это, добавив subview.

//Get your screen size 
CGRect screenBounds = [[UIScreen mainScreen] bounds]; 
//Create the transparent view of the same size 
UIView* transparentView = [[UIView alloc] initWithFrame:screenBounds]; 
// change the background color to black and the opacity to 0.5 as this will make it look transparent 
transparentView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5]; 
// add this new view to your main view 
[self.view addSubview:transparentView]; 

Затем в этом представлении вы можете добавить все элементы пользовательского интерфейса. Это заставит его выглядеть, как прозрачное стекло ставится поверх старого вида.

Когда вы закончите, вы просто удалите из супер-просмотра.

[transprentView removeFromSuperview]; 

EDIT:

Или вы могли бы сделать это like this answer.

Надежда, что помогает, Джулиан

1

Чтобы сделать вид вашей точки зрения контроллера прозрачный viewController.view.backgroundColor = [UIColor clearColor];

Но, это не поможет вам увидеть содержание зрения контроллера за ним во всех ситуациях. Например, если ваши контроллеры находятся в контроллере навигации, это не так. В этом случае - перед тем, как нажать новый контроллер сверху, сделайте снимок с method и используйте его как слой под всем содержимым верхнего контроллера.

Как

UIView *backgroundView = [navVC.topViewController.view snapshotViewAfterScreenUpdates:NO]; 

[nextVC.view insertSubview:backgroundView atIndex:0]; 
[navVC psuhViewController:nextVC animated:YES]; 
Смежные вопросы