xcode – 用swift中的KVO观察contentSize(CGSize)
发布时间:2020-12-14 18:04:12 所属栏目:百科 来源:网络整理
导读:我正在尝试像这样观察collectionView.contentSize: func startObserveCollectionView() { collectionView.addObserver(self,forKeyPath: "contentSize",options: NSKeyValueObservingOptions.Old.union(NSKeyValueObservingOptions.New),context: SearchDas
我正在尝试像这样观察collectionView.contentSize:
func startObserveCollectionView() { collectionView.addObserver(self,forKeyPath: "contentSize",options: NSKeyValueObservingOptions.Old.union(NSKeyValueObservingOptions.New),context: &SearchDasboardLabelContext) } override func observeValueForKeyPath(keyPath: String?,ofObject object: AnyObject?,change: [String : AnyObject]?,context: UnsafeMutablePointer<Void>) { if context == &SearchDasboardLabelContext { if object === collectionView && keyPath! == "contentSize" { print(change) } } } 在xcode终端我得到了一个N??SSize而不是像这样的CGSize: Optional(["old": NSSize: {320,0},"new": NSSize: {375,39.5},"kind": 1]) 在objective-c中,我使用了方法CGSizeValue CGSize newContentSize = [[change objectForKey:NSKeyValueChangeNewKey] CGSizeValue]; 在swift中有没有像CGSizeValue这样的方法 我试过swift var newContentSize = change [NSKeyValueChangeNewKey]?.CGSizeValue()但是得到了错误
需要帮助吗?谢谢 解决方法
你在iOS上吗?因为我,我做了同样的事情,并得出了同样的问题;为何选择NSSize?也许这就是xcode终端对我们起作用的伎俩.
无论如何,您可以将其强制转换为NSValue,然后您就可以使用CGSizeValue了: if let zeChange = change as? [NSString: NSValue] { let oldSize = zeChange[NSKeyValueChangeOldKey]?.CGSizeValue() let newSize = zeChange[NSKeyValueChangeNewKey]?.CGSizeValue() } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |