问题标签 [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.

0 投票
2 回答
431 浏览

ios - IBDesignable 不显示程序化 UI 元素

我创建了一个ViewControllerRootHomeCenter继承自 UIViewController 的自定义 ViewController 类,并选中该框以创建随附的 XIB 文件。我将File's Owner自定义类属性设置为ViewControllerRootHomeCenter. 然后,我在 viewDidLoad 方法中创建了几个 UI 元素,以查看它们是否正在加载到设备和模拟器上,它们实际上正在屏幕上显示。然后在ViewControllerRootHomeCenter.h我设置的文件IB_DESIGNABLE上面@interface ViewControllerRootHomeCenter声明。然而,XIB 显示的是一个没有 UI 元素的白屏。

空 XIB

0 投票
5 回答
13398 浏览

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?

0 投票
4 回答
6062 浏览

ios - IBDesignable 来自外部框架?

我想创建一些使用@IBDesignableand@IBInspectable标签的自定义视图。我已将这些添加到我的框架中,然后将我的框架链接到我的测试应用程序。但Designables从未出现在故事​​板中。

如何使用@IBDesignable@IBInspectable从外部框架创建自定义视图?

您可以在非嵌入式框架的应用程序中使用@IBDesignable和吗?@IBInspectable

谢谢你。

0 投票
1 回答
1807 浏览

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 现在可以正确绘制自定义控件。

这不是我需要的解决方案,但它指出了问题所在,我仍然需要找出正确的解决方案。

0 投票
1 回答
1367 浏览

ios - IBDesignable 视图渲染

我有像这张图片这样的自定义视图,它可以工作(我在drawRect中设置的文本字体和文本颜色)

+************************+

*文字01 图片*

*文本 02 _______ *

+************************+

现在我想从 Interface Build 设置字体和颜色,但出现错误:

IB Designables:无法渲染 AvailableSeatView 的实例:渲染视图耗时超过 200 毫秒。您的绘图代码可能会受到性能缓慢的影响。

这是我的代码:

在 AvailableSeatView.h

在 AvailableSeatView.m

在谷歌搜索后,我发现这篇文章:IBDesignable View Rendering timeouts 我尝试覆盖initWithFrameinitWithCoder但它仍然无法正常工作。

0 投票
2 回答
1257 浏览

ios - IBInspectable UIView 属性

我可以让我的 UIView @property 可检查吗?

我创建了一个可设计的视图 PKCircleProgressView,我希望它可以从 IB 编辑。我还创建了另一个包含 PKCircleProgressView 作为子视图的可设计视图,我希望它也可以编辑。

如果我在 IB 中使用 Superview,有什么方法可以编辑 circleProgressView 的属性?

我只提出了一个想法,为两个视图创建一个通用协议,并实现以下方法:

但是对每个属性都做到这一点并不容易,特别是如果我想创建另一个包含我的 Superview 的视图。

0 投票
1 回答
139 浏览

ios - IB_DESIGNABLE tintColor 问题

我正在进入 IB_DESIGNABLE,我偶然发现了一个问题。

当我使用 IB 设置自定义视图的 tintColor 时,它会在 IB 中以正确的方式呈现。

在此处输入图像描述

但是当我在设备上运行它时,它会以默认的 tintColor 显示。

在此处输入图像描述

有什么区别?为什么它在设备中以默认色调显示,并在 IB 中正确显示?

更新:

0 投票
1 回答
2333 浏览

ios - 检查代码是否在 Interface Builder 中运行

IBDesignable在 swift 中有自定义类,它们会做一些导致 Interface Builder 崩溃的事情。是否有一个标志我可以检查我是否在界面生成器中运行?理想情况下,它将是一个预编译器指令(#ifdef COMPILED_FOR_INTERFACE_BUILDER或类似的东西)。我想也许我可以自己设置一个标志,prepareForInterfaceBuilder()但这看起来很混乱而且似乎不能可靠地工作,因为它看起来类属性是在调用该函数之前设置的,这可能会触发导致问题的代码。似乎必须有更好的方法。谢谢!

0 投票
1 回答
3268 浏览

ios - 子类化 UIButton 并使其成为 IBDesignable

我有一个使用自定义按钮的应用程序,按钮应该只是有一个背景图像。我宁愿拥有一个 UIButton 子类,而不是将背景图像添加到所有按钮。如果自定义按钮也在 Interface Builder 中正确呈现,那就太好了。这是我迄今为止的尝试:

这是 patientButton.png

在此处输入图像描述

两个问题:

  1. 该按钮无法在 Interface Builder 中正确呈现。它只是显示为系统按钮
  2. 除非我在 Interface Builder 中调整按钮的大小以为图像留出空间,否则不会显示标题;即,该contentEdgeInsets属性sizeToFit似乎没有效果

我想这是一个非常基本的问题,但我无法解决。有什么建议吗?

根据下面与马特的讨论编辑 1:

我想要实现的是在按钮标题周围留出一些空间。这是我的理解,contentEdgeInsets但看起来我错了。没有contentEdgeInsets这个是按钮的渲染

在此处输入图像描述

这看起来很可怕。我想以编程方式得到这样的东西,而不必在 IB 中调整按钮的大小

在此处输入图像描述

0 投票
0 回答
285 浏览

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 约束并想设置我自己的约束。我怎样才能清除这个约束?