问题标签 [ibdesignable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - IBDesignable 不显示程序化 UI 元素
我创建了一个ViewControllerRootHomeCenter
继承自 UIViewController 的自定义 ViewController 类,并选中该框以创建随附的 XIB 文件。我将File's Owner
自定义类属性设置为ViewControllerRootHomeCenter
. 然后,我在 viewDidLoad 方法中创建了几个 UI 元素,以查看它们是否正在加载到设备和模拟器上,它们实际上正在屏幕上显示。然后在ViewControllerRootHomeCenter.h
我设置的文件IB_DESIGNABLE
上面@interface ViewControllerRootHomeCenter
声明。然而,XIB 显示的是一个没有 UI 元素的白屏。
ios - 您可以使用类别/扩展将 IBDesignable 属性添加到 UIView 吗?
对于那些不知道我在说什么的人,Xcode 6.0 添加了新功能,IBDesignable 和 IBInspectable。
当您使用 IBInspectable 属性标记自定义视图时,这些属性会显示在 IB 的 Attributes Inspector 中。
同样,当您使用 IBDesignable 标记自定义 UIView 子类时,Xcode 会编译您的视图并调用代码以直接在 Xcode 窗口中呈现您的视图对象,以便您可以看到它们的外观。
将 IBDesignable 和 IBInspectable 属性添加到自定义视图的技术在 Swift 和 Objective-C 中几乎相同。IBInspectable 属性出现在 Interface Builder Attributes Inspector 中,无论您使用哪种语言来定义它们。
我在 Objective-C 中创建了一个 UIView 类别,并在 Swift 中创建了 UIView 的扩展,将视图底层的borderWidth、cornerRadius、borderColor 和layerBackgroundColor 属性提升为视图的属性。如果更改属性,扩展/类别会根据需要进行类型转换并将更改转发到图层。
IBInspectable 部分效果很好。我看到并可以在 IB 属性检查器中设置新属性。
我本可以在上周发誓,我的视图类别/扩展上的 IBDesignable 属性也在工作,我可以在 IB 中看到我的自定义 UIView 类别呈现,它的图层属性已更改。这周它不工作。
我是不是产生了幻觉?
现有系统类的类别/扩展是否可以在使用 IBDesignable 设置时在 Interface Builder 中绘制其自定义 UI?
ios - IBDesignable 来自外部框架?
我想创建一些使用@IBDesignable
and@IBInspectable
标签的自定义视图。我已将这些添加到我的框架中,然后将我的框架链接到我的测试应用程序。但Designables从未出现在故事板中。
如何使用@IBDesignable
和@IBInspectable
从外部框架创建自定义视图?
您可以在非嵌入式框架的应用程序中使用@IBDesignable
和吗?@IBInspectable
谢谢你。
ios - 从 IBDesignable 中的自定义控件框架加载代码
我已经在一个运行良好的 OS X 应用程序中实现了一个自定义控件。绘制控件时,它使用来自非系统框架的代码。控件是用swift编写的,框架是用Objective-C编写的。框架未与具有自定义控件的应用程序构建在同一项目或工作区中。我已将框架添加到目标并将其添加到复制文件构建阶段。
当我快速将 IBDesignable 装饰添加到自定义控件类时,尝试在 Interface Builder 中查看控件时出现错误。我得到的错误是:
file:///Users/ktam/github/MovingImagesDemo/Spinner2/SpinnerController.xib: error: IB Designables: Failed to render instance of Spinner:
dlopen(Spinner2.app, 1): Library not loaded: @executable_path/../Frameworks/MovingImages.framework/Versions/A/MovingImages
Referenced from: Spinner2.app
Reason: image not found
当我检查在 IBDesignables 子文件夹中创建的应用程序包时,框架位于应用程序包中的正确位置。我假设在这种情况下实际运行的可执行文件不是 IBDesignables 应用程序包中的那个,而是可能是某种 Interface Builder 可执行文件,它解释了为什么无法加载框架图像。
我需要做什么来加载 Interface Builder 在使用 IBDesignable 呈现视图时可以找到的代码?
进一步测试后的信息:
我在将安装目录指定为 ~/Library/Frameworks 的同时重建了框架,然后将构建的框架复制到该位置,然后我更新了应用程序目标,以便运行路径搜索路径包括 ~/Library/Frameworks 以及应用程序和接口Builder 现在可以正确绘制自定义控件。
这不是我需要的解决方案,但它指出了问题所在,我仍然需要找出正确的解决方案。
ios - IBDesignable 视图渲染
我有像这张图片这样的自定义视图,它可以工作(我在drawRect中设置的文本字体和文本颜色)
+************************+
*文字01 图片*
*文本 02 _______ *
+************************+
现在我想从 Interface Build 设置字体和颜色,但出现错误:
IB Designables:无法渲染 AvailableSeatView 的实例:渲染视图耗时超过 200 毫秒。您的绘图代码可能会受到性能缓慢的影响。
这是我的代码:
在 AvailableSeatView.h
在 AvailableSeatView.m
在谷歌搜索后,我发现这篇文章:IBDesignable View Rendering timeouts 我尝试覆盖initWithFrame,initWithCoder但它仍然无法正常工作。
ios - IBInspectable UIView 属性
我可以让我的 UIView @property 可检查吗?
我创建了一个可设计的视图 PKCircleProgressView,我希望它可以从 IB 编辑。我还创建了另一个包含 PKCircleProgressView 作为子视图的可设计视图,我希望它也可以编辑。
如果我在 IB 中使用 Superview,有什么方法可以编辑 circleProgressView 的属性?
我只提出了一个想法,为两个视图创建一个通用协议,并实现以下方法:
但是对每个属性都做到这一点并不容易,特别是如果我想创建另一个包含我的 Superview 的视图。
ios - IB_DESIGNABLE tintColor 问题
我正在进入 IB_DESIGNABLE,我偶然发现了一个问题。
当我使用 IB 设置自定义视图的 tintColor 时,它会在 IB 中以正确的方式呈现。
但是当我在设备上运行它时,它会以默认的 tintColor 显示。
有什么区别?为什么它在设备中以默认色调显示,并在 IB 中正确显示?
更新:
ios - 检查代码是否在 Interface Builder 中运行
我IBDesignable
在 swift 中有自定义类,它们会做一些导致 Interface Builder 崩溃的事情。是否有一个标志我可以检查我是否在界面生成器中运行?理想情况下,它将是一个预编译器指令(#ifdef COMPILED_FOR_INTERFACE_BUILDER
或类似的东西)。我想也许我可以自己设置一个标志,prepareForInterfaceBuilder()
但这看起来很混乱而且似乎不能可靠地工作,因为它看起来类属性是在调用该函数之前设置的,这可能会触发导致问题的代码。似乎必须有更好的方法。谢谢!
ios - 子类化 UIButton 并使其成为 IBDesignable
我有一个使用自定义按钮的应用程序,按钮应该只是有一个背景图像。我宁愿拥有一个 UIButton 子类,而不是将背景图像添加到所有按钮。如果自定义按钮也在 Interface Builder 中正确呈现,那就太好了。这是我迄今为止的尝试:
这是 patientButton.png
两个问题:
- 该按钮无法在 Interface Builder 中正确呈现。它只是显示为系统按钮
- 除非我在 Interface Builder 中调整按钮的大小以为图像留出空间,否则不会显示标题;即,该
contentEdgeInsets
属性sizeToFit
似乎没有效果
我想这是一个非常基本的问题,但我无法解决。有什么建议吗?
根据下面与马特的讨论编辑 1:
我想要实现的是在按钮标题周围留出一些空间。这是我的理解,contentEdgeInsets
但看起来我错了。没有contentEdgeInsets
这个是按钮的渲染
这看起来很可怕。我想以编程方式得到这样的东西,而不必在 IB 中调整按钮的大小
ios - IOS。移除 IBDesignable 约束
我在我的项目中使用第三方锁屏JKLlockscreen。并且锁屏使用 IBDesignable 约束。但是当我设置它时,它并不完全适合 iphone 4 屏幕等,而且它在情节提要中给出了这样的错误。
file:///Users/usersname/Desktop/untitled%20folder/projectname/LockScreenViewController/JKLLockScreenViewController.xib:错误:IB Designables:无法呈现 JKLLockScreenNumber 的实例:dlopen(projectname.app,1):找不到合适的图像。确实找到了:projectname.app: mach-o,但是架构错误
我在这个Failed to render IBDesignable stackoverflow 问题中找到了这个错误的解决方案。但我无法解决这个问题。
所以,我想删除这个 IBDesignables 约束并想设置我自己的约束。我怎样才能清除这个约束?