我有一個模態視圖,我想要顯示計算結果。爲了讓所有的iOS7看起來,我想要一個帶有模糊背景的彈出視圖的有色背景。UIImage + ImageEffects無法在設備上工作
我設法使用蘋果公司的「UIImage + ImageEffects.h/m」文件工作。
這是模態視圖的viewDidLoad中:
- (void)viewDidLoad {
[super viewDidLoad];
/* How it works
self.image is a screenshot of the VC presenting the modal view
1- we set the background as the screenshot of the previous viewControler
2- we hide the popup view
3- we set the background of the popup as a blured snapshot of its container view (self.view)
4- we unhide the popup view and set its radius
5- we create a tinted version of the background image (what we got from the previous view controller
6- we set the background of self.view to the tinted version
*/
// *** 1 ***
self.view.backgroundColor=[UIColor colorWithPatternImage:self.image];
// *** 2 ***
self.containerView.hidden=YES;
// *** 3 ***
UIImage *pepe=[self bluredImageFromView:self.containerView withBackground:self.view withBackgroundTintColor:[UIColor colorWithWhite:1 alpha:0.75]];
self.containerView.backgroundColor=[UIColor colorWithPatternImage:pepe];
// *** 4 ***
self.containerView.hidden=NO;
self.containerView.layer.cornerRadius=4.5f;
// *** 5 ***
UIImage *tintedBackground =[self.image applyBlurWithRadius:0
tintColor:[UIColor colorWithRed:0.85 green:0.85 blue:0.85 alpha:0.35]
saturationDeltaFactor:1.8
maskImage:nil];
// *** 6 ***
self.view.backgroundColor=[UIColor colorWithPatternImage:tintedBackground];
}
它工作得很好的模擬器但是當我試圖onmy iPhone(4S),提出了模態視圖的時候,我有一個黑色的屏幕。沒有錯誤,沒有抱怨從控制檯,沒有任何。
有什麼想法?
編輯
我添加代碼:
if (!self.image) NSLog (@"self.image is empty");
在viewDidLoad中
之初看來,在模擬器上self.image不爲零,而在設備上它是。我嘗試從父VC上的prepareForSegue實例化self.image,但不起作用。
非常感謝!我實際上是修改了Ray Wenderlicht的教程中的一段剪輯代碼,這正是你指出的那個線程。我使用您提供的這些代碼調整了我的方法,現在它像魅力一樣工作。我不知道該怎麼感謝你才足夠! – Marcal
不客氣。我很想知道'applyBlurWithRadius:tintColor:saturationDeltaFactor:maskImage:'是否適用於iPhone 4. –
我只能告訴你,用我的4s可以完美無瑕。我會在提交應用程序之前幾天在我的iPad 3上嘗試它。 – Marcal