gpt4 book ai didi

ios - Swift Today Extension preferredContentSize 不调整大小

转载 作者:搜寻专家 更新时间:2023-10-31 22:05:29 24 4
gpt4 key购买 nike

就像描述说的那样,我正在开发一个 iOS 应用程序,并想为其创建一个 Today Extension Widget。我的问题是我想将高度更改为 200。在研究之后,我发现唯一的解决方案是使用 preferredContentSize 属性,但这对我不起作用。

我想给它添加一个 tableView 并且我希望它应该被完全显示。我添加了 viewDidLoad 方法,这样您就可以看到表的创建和添加位置。

override func viewDidLoad() {
super.viewDidLoad()

let myDefaults = UserDefaults(suiteName: "group.com.iOSApp")!
let eventData = myDefaults.object(forKey: "events")

if eventData != nil {
shownEvents = NSKeyedUnarchiver.unarchiveObject(with: eventData as! Data) as! [Event]
}

eventTable = UITableView()
eventTable.register(TodayViewCell.self, forCellReuseIdentifier: "cell")
eventTable.separatorColor = UIColor.primary()
view.addSubview(eventTable)
eventTable.translatesAutoresizingMaskIntoConstraints = false

var tempX = NSLayoutConstraint(item: eventTable, attribute: .leading, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: .leading, multiplier: 1, constant: 0)
var tempY = NSLayoutConstraint(item: eventTable, attribute: .top, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: .top, multiplier: 1, constant: 0)
NSLayoutConstraint.activate([tempX, tempY])

tempX = NSLayoutConstraint(item: eventTable, attribute: .trailing, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: .trailing, multiplier: 1, constant: 0)
tempY = NSLayoutConstraint(item: eventTable, attribute: .bottom, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: .bottom, multiplier: 1, constant: 0)
NSLayoutConstraint.activate([tempX, tempY])


eventTable.delegate = self
eventTable.dataSource = self

eventTable.reloadData()

preferredContentSize.height = 200


}

最佳答案

在 iOS 10 中直接设置 preferredContentSize.height 是行不通的

iOS 10之后,有两种显示今天的扩展

案例1 Show More(展开类型,可自定义高度)

案例 2 Show Less(紧凑类型,具有默认高度)

enter image description here

What's new in iOS 10

所以你应该为 iOS 10 早期版本和 iOS 10 提供高度

if #available(iOSApplicationExtension 10.0, *) {
//setup display mode (show more(.expended) or show less(.compact))
extensionContext?.widgetLargestAvailableDisplayMode = .expanded
} else {
// Fallback on earlier versions
preferredContentSize.height = 200
}

并且应该实现自定义高度

func widgetActiveDisplayModeDidChange(_ activeDisplayMode:NCWidgetDisplayMode,withMaximumSize maxSize:CGSize){

@available(iOSApplicationExtension 10.0, *)
func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
switch activeDisplayMode {
case .expanded: preferredContentSize.height = 200
case .compact: preferredContentSize = maxSize
}
}

关于ios - Swift Today Extension preferredContentSize 不调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41875811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com