加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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()但是得到了错误

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()
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读