Phương pháp mà tôi đã qua sử dụng, mặc dù không hoàn hảo và có một dân sót nhỏ trong Notification Center, nhưng làm việc cho tôi:
trong viewDidLoad() thiết lập chiều cao kích thước nội dung ưa thích để 1:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view from its nib.
preferredContentSize = CGSizeMake(0, 1)
view.setNeedsLayout()
}
.210
sau đó khi cập nhật widget, được chiều cao thực tế và thiết lập nó:
var data: NSData?
func updateData() {
// fetch data
if let data = data {
let viewHeight: CGFloat
// UI preperation and initialize viewHeight var
preferredContentSize = CGSizeMake(0, viewHeight);
} else {
preferredContentSize = CGSizeMake(0, 1);
}
}
func widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)) {
// Perform any setup necessary in order to update the view.
// If an error is encountered, use NCUpdateResult.Failed
// If there's no update required, use NCUpdateResult.NoData
// If there's an update, use NCUpdateResult.NewData
updateData()
completionHandler(data != nil ? NCUpdateResult.NewData : NCUpdateResult.NoData)
}
hi, tahnks cho câu trả lời siêu, nhưng câu hỏi xin vui lòng cho ghi chú này: "Các NCWidgetController không thể được thiết lập lại từ các widget riêng của mình sau khi đã đặt không có nội dung để hiển thị. Nói cách khác một khi bạn đặt nó thành NO thì sẽ không quay trở lại trừ khi bạn kích hoạt nó từ ứng dụng cha/có chứa."Làm thế nào tôi có thể" kích hoạt nó từ cha mẹ/có chứa ứng dụng. "Tôi đã không có bạn rất tốt, bạn có thể cho tôi ví dụ? nhờ vậy mush – Rawan