IBInspectable和协议(protocols)

4
我正在使用名为“LiveRendering”的新Xcode 6功能。由于我需要在不同的自定义视图上频繁使用一些可检查属性,因此我希望在协议中声明它们。
例如:
- LiveRenderingTextAttributesProtocol(声明textColor、textSize等可检查属性) - LiveRenderingBorderAttributesProtocol(声明borderStyle、borderColor、borderWidth等可检查属性)
然后,每个自定义视图都实现其需要的协议。
但是,我无法在Interface Builder的“属性检查器”列中看到我的可检查属性。当我将这些属性的值定义为“用户定义的运行时属性”时,LiveRendering能够正常工作,但我想在属性检查器列中看到它们。
请问如何解决这个问题?
1个回答

1
协议定义了一组可选或必需的方法和属性,但是实现它们的责任在于类。为了能够拥有可重用的基本IBInspectable属性,您可以创建一个超类MyInspectableView,其中声明和实现这些属性,然后您可以对其进行子类化并共享所有这些IBInspectables。

太糟糕了:(实际上,如果我有4种可检查属性(文本属性(A),背景属性(B),边框属性(C),其他属性(D)),我需要创建15个超类来匹配所有可能性(A,B,C,D,AB,AC,AD,BC,BD等...)这是不可接受的;因此,我将直接在每个自定义视图上声明我的属性 :/ - QLag
1
@QLag 那么你可以创建一个超类,实现所有需要检查的属性的setter方法,例如文本属性、背景属性等,但不在接口中声明它们。然后子类只需声明他们想要使用的属性,由于它们是父类的子类,所以一切都应该正常工作。采用这种方法,您不会重复实现,而只是接口声明。 - Gorka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接