IBInspectable 与 Cocoa Touch Framework 不起作用? (附代码)

2024-01-19

我似乎无法让“titleText”IBInspectable 属性正常工作。我有一个带有 UILabel 的简单框架视图,我创建了一个 IBInspectable 变量“titleText”。我注意到可检查的“层”变量按预期工作,但不是我的自定义“titleText”,它应该使用此框架更新主视图。

问题是:

  1. Interface Builder 没有更新 titleLabel? (即在设计时)即我期望这应该如此,就像它适用于“图层”项目一样。

  2. 在运行时,titleLabel 的值也没有采用我在 IB 中设置的值。请注意,我在运行时得到以下输出,即生成此结果的代码发现“self.titleLabel”实际上为零?

代码摘要

(a) gcCustomView.xib Snapshot enter image description here

(b) gcCustomerView.swift

import UIKit

@IBDesignable 
class gcCustomView: UIView {

    @IBOutlet weak var titleLabel: UILabel!
    @IBInspectable var titleText: String = "Default" {
        didSet {
            if  self.titleLabel != nil {
                self.titleLabel.text = titleText
            } else {
                NSLog("Could not set title text as label.text was nil : was trying to set to \(titleText)")
            }
        }
    }


    @IBInspectable var cornerRadius: CGFloat = 0 {
        didSet {
            layer.cornerRadius = cornerRadius
            layer.masksToBounds = cornerRadius > 0
        }
    }
    @IBInspectable var borderWidth: CGFloat = 0 {
        didSet {
            layer.borderWidth = borderWidth
        }
    }
    @IBInspectable var borderColor: UIColor? {
        didSet {
            layer.borderColor = borderColor?.cgColor
        }
    }


    override init(frame: CGRect) {
        super.init(frame: frame)
        commitInit()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        commitInit()
    }

    // Private

    func commitInit() {
        if self.subviews.count == 0 {
            print("Loading Nib")
            //let bundle = Bundle(forClass: self.dynamicType)
            let bundle = Bundle(for: type(of: self))
            let nib = UINib(nibName: "gcCustomView", bundle: bundle)
            let view = nib.instantiate(withOwner: self, options: nil)[0] as! UIView
            view.frame = bounds
            view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
            addSubview(view)
        }
    }

}

(c) Main.storyboard 快照


Select gcCustomView.xib File's Owner将类名更改为gcCustomerView.

右键单击Label拖自outlet to File Owner

现在如果你右键单击它应该看起来像这样Label

我做了一个演示项目。工作正常。如果您仍然有问题,请告诉我。我将在 Github 上上传我的演示项目。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IBInspectable 与 Cocoa Touch Framework 不起作用? (附代码) 的相关文章

  • iOS7上UITableViewCell显示白色背景且无法修改

    我已经实现了一个继承自的自定义表格视图单元格类UITableViewCell 表格视图包含背景图像 所以我希望单元格的背景是透明的 iOS7之前看起来很棒 然而 在 iOS7 中 单元格始终显示为白色背景 即使对于 Xcode7 2015
  • UITableViewCell 上的 textLabel.backgroundColor 不起作用

    我正在尝试设置 UITableViewCells 的标签背景颜色 但它根本不执行任何操作 我想知道是否还有其他方法可以做到这一点 所以我问 我试过这个 cell textLabel backgroundColor UIColor redCo
  • 禁用选择单个 UITableViewCell

    如何禁止在 UITableView 中仅选择单个单元格 我有几个 我只想禁用最后一个 要停止仅选择某些单元格 请使用 cell userInteractionEnabled NO 除了阻止选择之外 这还会阻止为设置了该选项的单元格调用 ta
  • Xcode 7.3.1 可以在 macOS 10.12 上运行吗?

    我想安装并尝试 macOS 10 12 的新功能 我也很想在 Xcode 8 0 上工作 但同时我有一些应该在 Swift 2 2 Xcode 7 3 1 上编写的客户端项目 我不想使用 Swift 2 3 或 Swift 3 0 那么可以
  • NSSortDescriptor 和多对多关系

    我有两种反对意见 地点和历史项目 我正在尝试获取附加到任何历史记录项目的位置 因此该位置的获取谓词是 history count gt 0 效果很好 我还想使用 NSSortDescriptor 按最新历史项目的日期对位置对象进行排序 据我
  • 为什么 UIWebView 吃这么多内存?

    我正在使用 UIWebView 为我的 iPad 应用程序加载纯文本 HTML 页面 HTTP页面的大小只有40KB 但是当我使用仪器监控加载 UIWebView 的内存使用情况时 我发现它消耗了大约 20MB 内存 如果我滚动 Web 视
  • MPMediaItemPropertyPercientID 的 NSNumber 到 NSString 并再次返回

    我使用以下代码循环播放 iPhone 音乐库中的所有歌曲 NSArray songs NSArray alloc initWithArray MPMediaQuery songsQuery collections for MPMediaIt
  • 如何让精灵对 cocos2d android 中的触摸做出反应?

    我有 1 支枪 当点击屏幕上的任何一点时 子弹都会发射 但根据我的要求 有 3 支枪 精灵 当触摸任何精灵时 子弹必须发射 当谷歌搜索时 我知道这可以是通过使用targetedTouchDelegate或循环所有的精灵并为每个触摸的精灵设置
  • UITextView自定义自动完成

    有没有办法为 UITextView 实现自定义自动完成 例如给它一个NSDictionary or NSArray需要注意的字符串 你必须自己编程 如果您实现 UITextViewDelegate 协议 则该函数 BOOL textView
  • 找出窗口中的 UIBarButtonItem 框架?

    UIBarButtonItem不延长UIView 所以没有像框架属性这样的东西 但有什么办法我可以得到它是什么CGRect框架 相对于应用程序UIWindow 你喜欢用吗私有API https stackoverflow com quest
  • 将蒙版图像作为 PNG 文件写入磁盘

    基本上 我从网络服务器下载图像 然后将它们缓存到磁盘上 但在这样做之前 我想屏蔽它们 我正在使用每个人似乎都指出的屏蔽代码 可以在这里找到 http iosdevelopertips com cocoa how to mask an ima
  • 使用 iPhone SDK 访问 iPhone 的通话记录

    我正在构建需要 iPhone 通话记录 只读 中的一些数据的应用程序 呼叫日志是一个位于 用户 库 CallHistory call history db 我使用越狱设备来提取日志 但是尝试使用以下命令打开此位置sqlite open3 命
  • 如何创建凸起的标签栏项目,就像 Instagram 中的那样?

    如何在 UITabBar 中创建凸起项目 例如 Instagram 有这样的 我如何在我的应用程序中实现类似的目标 iDevRecipes 最近发布了有关如何重新创建这一内容的文章 尽管它不是由 Instagram 的开发人员编写的 查看这
  • 使用 Xcode 资产目录缓存 UIImage

    我们都知道UIImage神秘的幕后缓存机制imageNamed 方法 在苹果的UIImage 类参考 https developer apple com library IOS documentation UIKit Reference U
  • 使用“dispatch_async(dispatch_get_main_queue(),^{block})”更新UI

    我想更新 NSURLSession 的完成块中的 UI 最初的实现并没有立即更新 UI 大约 20 秒后它更新了 UI 这是最初的实现 NSURLSessionDataTask task self session dataTaskWithR
  • 通知服务扩展不起作用

    发送时未显示通知mutable content 1使用推送有效负载时 它不会命中通知服务扩展内的断点 尽管没有显示可变内容推送 但通知内容扩展也工作正常 我没有修改通知服务扩展中的代码 它是 Xcode 生成的默认代码 我在创建通知服务扩展
  • 尝试在 iOS 10 上的 safari 中获取地理位置时出现错误

    已阻止 对地理位置的访问因不安全的连接而被阻止http www hnsjb cn http www hnsjb cn 我应该将网站更改为 https 协议吗 iOS 10 和桌面 Safari 10 现在似乎需要 https 连接 Safa
  • [UIView beginAnimations] 如何工作?

    我想知道 Cocoa Touch 中的动画是如何工作的 例如 UIView beginAnimations nil context nil UIView setAnimationDuration 1 0 view1 alpha 1 0 vi
  • Xcode:增加内部版本号

    我们使用一个脚本来创建时间戳并替换应用程序版本号 bin bash echo Update Build Number to Timestamp echo fail on error set e agvtool new version all
  • 如何在地图注释视图中找到 pin id?

    如何找到被点击的 pin 的 pin id 即 pin 标题和副标题的详细信息 我用它来显示引脚注释 这段代码在视图中确实加载了 resultCoordinate addObjectsFromArray sqlClass return Co

随机推荐