2016-09-13 21 views
0

我創建了一個簡單的彈出,但問題是當彈出然後我嘗試山水它不能正常工作的UIView作爲彈出景觀自動佈局問題

注:我使用的自動佈局

這裏是我的代碼

mpop = [[MPopUp alloc] init]; 
mpop.frame = CGRectMake(((self.view.frame.size.width) - 
         mpop.frame.size.width)/2, 
         ((self.view.frame.size.height) - 
         mpop.frame.size.height)/2, 
         mpop.frame.size.width, 
         mpop.frame.size.height); 

UIView *newView = [[UIView alloc] initWithFrame:CGRectMake(0, 
                  0, 
                  self.view.frame.size.width, 
                  self.view.frame.size.height)]; 

mpop.overlay = newView; 

UIVisualEffect *blurEffect; 
blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; 

UIVisualEffectView *visualEffectView; 
visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect]; 
visualEffectView.backgroundColor = [UIColor blackColor]; 
visualEffectView.alpha = 0.4; 
visualEffectView.frame = newView.bounds; 
[newView addSubview:visualEffectView]; 

newView.translatesAutoresizingMaskIntoConstraints = NO; 


[self.view addSubview:newView]; 
[mpop showInView:self.view animated:YES]; 

它在人像模式下工作正常,但沒有在景觀工作任何人都可以幫我嗎?

+0

如您不添加任何自動佈局約束的元素時,在運行時創建他們應該使用newView.translatesAutoresizingMaskIntoConstraints = YES;而不是你用什麼 –

+0

我試圖在YES但不工作我知道我需要設置約束編程,但我不是沒有關於編程約束我怎麼設置? @ m.k的。 –

+0

以編程方式發佈帶自動佈局約束的答案。我會根據你的代碼添加代碼,在任何模式下告訴我你想要的彈出窗口的大小。 –

回答

1

您需要爲這種情況添加自動佈局約束。我已將代碼添加到您的示例中,並在GitHub上提供供您參考。找到它在下面的鏈接。我不得不在2個文件中添加代碼,在view controller.m文件和view.m文件中。

https://github.com/mahesh-agrawal/Autolayout-Popup

檢查運行它。如果你想使寬度或高度動態化,你可以用下面的計算來代替硬編碼值。

[[UIScreen mainScreen] bounds].size.width * (290.0/320.0)代替290.0

+0

perfact,謝謝:) –

+1

歡迎,任何問題,你可以隨時告訴我。 :) –

+0

非常感謝好友 –