我的目标是在另一个uiviewcontroller之上呈现一个透明的uiviewcontroller ,这样后台将成为一个viewcontroller ..
I'm NOT using storyboard.
现在我只是添加了UIViews而不是UIViewcontrollers,一切运行良好,买问题是我觉得一个管理所有视图的视图控制器(可能很容易在一个单独的视图控制器中)认为是不好的做法 - 它只是感觉不对。
我正考虑创建一个viewcontroller inside of my base viewcontroller
,然后只是
[self addSubview:otherVC.view]
所以我得到的是一个视图控制器,它将viewcontroller作为属性并将其视图显示为子视图。
是否认为这是一种不好的做法?
我该怎么办?
self.view.backgroundColor = [UIColor clearColor];
self.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentModalViewController:modalVC animated:YES];
TNX。
答案 0 :(得分:2)
当我需要制作透明视图控制器时,我做了这样的方法:
- (UIImage *)screenshot:(CGRect)cropRect {
UIGraphicsBeginImageContext(cropRect.size);
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(ctx, -cropRect.origin.x, -cropRect.origin.y - [[UIApplication sharedApplication] statusBarFrame].size.height);
[self.view.window.layer renderInContext:ctx];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
然后我将它传递给透明视图控制器并使其成为背景视图
UIImage *bgImage = [self screenshot:self.view.window.frame];
transparentViewController.view.backgroundColor = [UIColor colorWithPatternImage:bgImage];
这样的事情。我可以为此目的使用另一种观点,它不一定必须是self.view