0

我想创建一个非常简单的 UIButton 子类来添加一些额外的功能,但是当我在情节提要上使用它时,我的按钮边框似乎消失了。

经过一些测试,似乎使用任何自定义 UIButton 子类都有这种效果,即使是完全空的接口和实现。

它很容易重现。尝试以下步骤:

1) 创建一个新的单视图应用程序
2) 在情节提要的视图中间添加一个 UIButton
3) 在模拟器中运行。

正如预期的那样,您应该会看到一个带有边框的 UIButton。现在...

4) 创建一个名为 SomeUIButtonClass 的 UIButton 子类,其接口声明为空,实现为空,如下所示:

SomeUIButtonSubclass.h:

#import <UIKit/UIKit.h>

@interface SomeUIButtonSubclass : UIButton

@end

SomeUIButtonSubclass.m:

#import "SomeUIButtonSubclass.h"

@implementation SomeUIButtonSubclass

@end

5) 在情节提要上,选择您之前添加的按钮,然后在 Identity Inspector 中的 Custom Class 下,将 Class 设置为SomeUIButtonSubclass
6)再次在模拟器中运行。

您将看到一个没有边框的按钮。

我已经习惯了疯狂的 iOS 开发,但这比平时更疯狂。

为什么会发生这种情况,我需要做些什么来防止它发生?

4

1 回答 1

1

从 nibs 加载的 UIButton 的子类未正确初始化UIButton中所述,其原因是您可以从情节提要中选择的 a 的“类型”实际上是作为UIButton子类实现的。UIButtons 默认没有边框;边框来自“系统”或“圆角矩形”类型。

在接口构建器中选择类型的基于代码的等价物的文档暗示了这一点,并且这些“类型”因此与自定义子类不兼容:

按钮类型:

...

此方法是一个方便的构造函数,用于创建具有特定配置的按钮对象。如果您子类UIButton化,此方法不会返回您的子类的实例。

在 Interface Builder 中同时设置“类型”和自定义类时,iOS 将完全忽略类型,而支持您明确指定的子类。

于 2014-04-20T16:13:10.140 回答