- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
就像描述说的那样,我正在开发一个 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(紧凑类型,具有默认高度)
所以你应该为 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/
我想根据一些设置更改模态框的 preferredContentSize。 例如:有一个开关,如果开关关闭,我想隐藏一些Cells。很好,但我还想调整模式的大小。 我会正常调整它的大小: var con
我有一个 TableView Controller ,它在 viewDidLoad 之后设置内容。在设置新内容时,我计算了 preferredContentSize。在显示弹出窗口之前,我可以查询 V
我正在寻找一种方法来强制执行 UIPopoverPresentationController 自动调整大小以填充大部分屏幕,减去 50 个填充单位。 我首先尝试在 viewDidLoad 中设置 pr
我正在使用 UIPopoverPresentationController 将我的 tableView Controller 呈现为 PopOver。我可以将其 preferredContentSiz
所以我有一个非常基本的 UIPresentationController,它基本上以屏幕为中心显示 contentView,它的大小由 View Controller preferredContent
我正在开发一个项目,我想让我的应用程序与 IOS7 兼容。 self.contentSizeForViewInPopover = CGSizeMake(90, 1 * 65 - 1); 此方法从 io
我正在尝试在 iPad 上从使用 UIPopoverController 切换到 ChildViewControllers。我们有 4 或 5 个 VC 在父导航 subview Controller
我想在 preferredContentSize(W: 250, H: 50) 的中心显示 PopoverViewController,但是它显示了那个 ViewController 的全尺寸,请找到
我能够通过简单地设置 preferredContentSize 成功地改变我呈现的弹出窗口的框架。我现在想为内容大小的变化设置动画,但我没有成功。它只是立即更新,事实上我设置的延迟甚至没有得到尊重。如
在弹出窗口的顶部,我有一个高度为 100px 的 UITextView,我使用 textView.textContainerInset = UIEdgeInsets(...)< 调整了其文本容器插入。
就像描述说的那样,我正在开发一个 iOS 应用程序,并想为其创建一个 Today Extension Widget。我的问题是我想将高度更改为 200。在研究之后,我发现唯一的解决方案是使用 pref
我有一个 NSWindowController ,其中包含 NSViewController 作为内容 View 。其中包含一些动态的文本。所以如果文字较多,我想增加窗口的高度。我可以使用下面的代码来
我正在实现一个 3D Touch 预览(peek) View Controller ,以在用力按下 PHAsset 时显示。我从 previewingContext:viewControllerFor
我正在使用 Xcode beta 6 在 iOS8 中开发 Today 扩展小部件。 我通过 viewWillAppear: 中的 setPreferredContentSize: 设置我的小部件的框
在我的 iOS 8 应用程序中,除了 iPhone 6 Plus 横向模式之外,此弹出窗口转场在所有方向的所有设备上均正确显示: 这是它在 iPhone 6 Plus 横向上的样子(它几乎从上到下拉伸
我调用如下所示的弹出窗口: if let vc = CalendarDetailViewControllerContainer.storyboardInstance() { vc.prefer
我有一个固定大小的 View Controller (无法调整大小)。这个特定的 View Controller 在窗口中显示为一个工作表,我通过设置 preferredContentSize 禁用了
我是一名优秀的程序员,十分优秀!