gpt4 book ai didi

ios - 获取 UIBarButtonItem 的框架返回 nil

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

我正在尝试像这样访问 UIBarButtonItem 的框架:

if let items = self.toolbarItems{

let item = items[1]

print(item)
let view = item.value(forKey: "view") as! UIView


}

print(item) 返回一个现有的项目。为什么无法取回 UIView

最佳答案

这就是使用未记录的属性的问题。它们可以更改,恕不另行通知。

以下是使用 iOS 10 SDK 使用 Xcode 8.3.1 的结果。

let item1 = UIBarButtonItem(customView: UIView())
let view1 = item1.value(forKey: "view") as? UIView
print("\(view1)")

打印

Optional(<UIView: 0x7f9049001400; frame = (0 0; 0 0); layer = <CALayer: 0x60000003cc00>>)

不过

let item2 = UIBarButtonItem(title: "Test", style: .plain, target: nil, action: nil)
let view2 = item2.value(forKey: "view") as? UIView
print("\(view2)")

打印

nil

甚至将其提升到一个新的水平

class MyObject: NSObject { @objc var view: UIView? } // Fake to get selector

let item3 = UIBarButtonItem(title: "Test", style: .plain, target: nil, action: nil)
let view3 = (item3 as NSObjectProtocol).perform(#selector(getter: MyObject.view))?.takeRetainedValue()
print("\(view3)")

打印

nil

关于ios - 获取 UIBarButtonItem 的框架返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43641698/

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