2016-11-07 90 views
2

我試圖在iOS 10中添加一個自定義通知,該通知利用了強制按下豐富的通知。我想以編程方式將視圖添加到從UNNotificationContentExtension繼承的視圖控制器的中心,但我得到的只是一個白色屏幕。UNNotificationContentExtension不能使用AutoLayout約束

import UIKit 
import UserNotifications 
import UserNotificationsUI 

class NotificationViewController: UIViewController, UNNotificationContentExtension { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     let myView = UIView() 
     myView.backgroundColor = UIColor.red 
     myView.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height) 
     self.view.addSubview(myView) 
    } 

    func didReceive(_ notification: UNNotification) { 

    } 

} 

,看起來像這樣:當我給它這樣一個框架的內容添加 enter image description here 但是當我嘗試使用此代碼使用自動版式編程(與PureLayout包裝):

import UIKit 
import UserNotifications 
import UserNotificationsUI 

class NotificationViewController: UIViewController, UNNotificationContentExtension { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let myView = UIView() 
     myView.backgroundColor = UIColor.red 
     self.view.addSubview(myView) 

     myView.autoPinEdge(toSuperviewEdge: .top) 
     myView.autoPinEdge(toSuperviewEdge: .left) 
     myView.autoMatch(.width, to: .width, of: self.view) 
     myView.autoMatch(.height, to: .height, of: self.view) 
    } 

    func didReceive(_ notification: UNNotification) { 

    } 

} 

結果是這樣的:enter image description here

什麼會導致AutoLayout無法在此視圖控制器中工作?我也用界面生成器測試了它,所以我很困惑。

回答

0

當您以編程方式製作視圖時,必須記得將translatesAutoresizingMaskIntoConstraints設置爲false或自動佈局的行爲不像您期望的那樣。

+0

這絕對是我錯過的東西,但它仍然沒有解決問題。如果我將self.view的背景顏色設置爲黑色,背景會達到我的預期。只要我添加一個約束到myView我得到一個空白的屏幕。 – tdon