2016-11-07 5 views
2

Ich versuche, eine benutzerdefinierte Benachrichtigung in iOS 10 hinzuzufügen, die die Force Press Rich-Benachrichtigungen verwendet. Ich möchte eine Ansicht programmgesteuert zur Mitte des View-Controllers hinzufügen, die von UNNotificationContentExtension erbt, aber alles, was ich bekomme, ist ein weißer Bildschirm. Der Inhalt hinzugefügt wird, wenn ich ihm einen Rahmen wie folgt geben:Kann keine AutoLayout-Einschränkungen für UNNotificationContentExtension verwenden

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) { 

    } 

} 

die wie folgt aussieht: enter image description here Aber wenn ich versuche Autolayout mit programmatisch (mit dem PureLayout Wrapper) mit diesem Code:

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) { 

    } 

} 

Das Ergebnis ist das: enter image description here

Was würde dazu führen, dass AutoLayout in diesem View-Controller nicht funktioniert? Ich habe es auch mit dem Interface Builder getestet, also bin ich ziemlich verwirrt.

Antwort

0

Wenn Sie eine Ansicht programmgesteuert erstellen, müssen Sie daran denken, translatesAutoresizingMaskIntoConstraints auf false festzulegen, oder das automatische Layout wird sich nicht wie erwartet verhalten.

+0

Das ist definitiv etwas, das ich vermisst habe, aber es hat das Problem immer noch nicht behoben. Wenn ich die Hintergrundfarbe von self.view auf schwarz setze, tut der Hintergrund, was ich erwarte. Sobald ich dem myView eine Einschränkung hinzufüge, erhalte ich einen leeren Bildschirm. – tdon

Verwandte Themen