xcode – 用swift中的KVO观察contentSize(CGSize)

前端之家收集整理的这篇文章主要介绍了xcode – 用swift中的KVO观察contentSize(CGSize)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试像这样观察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()但是得到了错误

could not find member ‘CGSizeValue’

需要帮助吗?谢谢

解决方法

你在iOS上吗?因为我,我做了同样的事情,并得出了同样的问题;为何选择NSSize?也许这就是xcode终端对我们起作用的伎俩.

无论如何,您可以将其强制转换为NSValue,然后您就可以使用CGSizeValue了:

if let zeChange = change as? [NSString: NSValue] {
    let oldSize = zeChange[NSKeyValueChangeOldKey]?.CGSizeValue()
    let newSize = zeChange[NSKeyValueChangeNewKey]?.CGSizeValue()
}

猜你在找的Xcode相关文章