2016-01-25 70 views
3

我想在我的應用程序中將圖像模糊爲固定背景。我的視圖控制器結構是這樣的:推送透明背景的ViewController

HostViewController(與背景圖像和VisualEffectView)
- NavigationController(模態呈現在HostViewController)
- 視圖控制器(有明確的背景色)

當我要推從NavigationController到另一個ViewController(它也有清晰的背景色),新的ViewController重疊了第一個ViewController,它通過新的ViewController可見。這看起來很奇怪和醜陋。我的問題是,如何在沒有ViewController的情況下實現具有固定背景的推動畫?

您可以在App Store中找到的應用「TuneShell」中看到此效果的示例。

在此先感謝,Fabian。



編輯: 爲了澄清我的問題,我添加了這個GIF:

正如你可以在GIF看,當我推到Playlist- ViewController,當它是動畫時,rootViewController通過新的Playlist-ViewController可見。我想解決這個問題。



什麼,我想實現:

http://fabian-thies.tk/demo.gif

+0

您必須添加背景在AppDelegate.m窗口在-didFinishLaunching裏面。 – 0yeoj

+0

@ 0yeoj謝謝你,但那不是我真正的問題。我編輯了我的問題,以便您更好地理解我的問題。 – FTFT1234

+0

啊..我看到..你有沒有嘗試在'-viewWillDisappear'裏面設置'self.view.alpha = 0'? – 0yeoj

回答

6

我有這樣回的解決方案,但我不認爲這是最好的一個,並保持記住這只是一個解決方法。

第一件事要做的就是設置你的global背景,如:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

    .. 
    self.window.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"blur.jpeg"]]; 

    return YES; 
} 

blur.jpeg是我使用這個例如(得到它從谷歌)清晰(不模糊)圖像

enter image description here

接下來是子類UIViewController全球使用,但它取決於你如何實現全球。

//BGBlurViewController.h 
// 
@interface BGBlurViewController : UIViewController 

@end 

//BGBlurViewController.m 
// 
@implementation BGBlurViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

    UIToolbar *background = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
    [background setBarStyle:UIBarStyleBlackTranslucent]; 
    [self.view addSubview:background]; 
    [self.view sendSubviewToBack:background]; 
} 

@end 

我使用UIToolbarUIViewController背景,達到虛化效果。


這是如何使用的子類UIViewController(BGBlurViewController)

//RootViewController 
// 
#import "BGBlurViewController.h" 

@interface ViewController : BGBlurViewController 

@end 

和另:

//View next to rootViewController 
// 
#import "BGBlurViewController.h" 

@interface ViewController2 : BGBlurViewController 

@end 

注: 我設置UIViewController S的的backgroundColor(視圖控制器和ViewController2)到Default /無故事板,這也只是一種解決方法...


這是在運行時的輸出樣本:

enter image description here

希望這會幫助你..乾杯..

+0

非常感謝你,這工作非常好! :) – FTFT1234

+0

@ FTFT1234;別客氣。 :) – 0yeoj

+0

@ FTFT1234相當聰明的把戲:)你知道幕後發生了什麼嗎?爲什麼它只適用於UIToolbar?你有沒有找到一個「解決方法 - 解決方案」:)? – ospr