Ios IB_可为UIButton设计无法呈现实例

Ios IB_可为UIButton设计无法呈现实例,ios,ios8,uibutton,xcode7,Ios,Ios8,Uibutton,Xcode7,我创建了一个UIButton类的类别,使用IB_DESIGNABLE。但是我遇到了一个奇怪的错误无法渲染RoundedCornerButton的实例:渲染视图需要超过200毫秒。您的绘图代码可能会出现性能缓慢的问题。我尝试了许多关于此网站的建议,但仍然无法修复它。请帮助我找到根本原因。有关详细信息,请参见图片(RoundCornerButton:是UIButton类的类别) 更新:圆形拐角按钮的代码类: .h文件 #import <UIKit/UIKit.h> IB_DESIG

我创建了一个
UIButton
类的类别,使用IB_DESIGNABLE。但是我遇到了一个奇怪的错误
无法渲染RoundedCornerButton的实例:渲染视图需要超过200毫秒。您的绘图代码可能会出现性能缓慢的问题。
我尝试了许多关于此网站的建议,但仍然无法修复它。请帮助我找到根本原因。有关详细信息,请参见图片(RoundCornerButton:是UIButton类的类别)

更新:圆形拐角按钮的代码类:

.h文件

  #import <UIKit/UIKit.h>
IB_DESIGNABLE
@interface RoundedCornerButton : UIButton
@property (nonatomic) IBInspectable int cornerRadius;
@property (nonatomic) IBInspectable int borderWidth;
@property (nonatomic) IBInspectable UIColor* borderColor;
@end

我可以成功地在设备上运行我的项目,但我得到了上面的红色警告真奇怪,我使用的是Xcode 7.0)

你不能这样玩
drawRect
中的
层。那不是绘画!绘画是关于内容的

将该代码移到其他地方,例如
从NIB唤醒
prepareforPrinterFaceBuilder
(两者都有),一切都会好起来

下面是示例代码:

@implementation RoundedCornerButton

-(void) config {
    self.layer.borderWidth = self.borderWidth;
    self.layer.borderColor = self.borderColor.CGColor;
    [self.layer setCornerRadius:self.cornerRadius];
    self.clipsToBounds = YES;
}

-(void)prepareForInterfaceBuilder {
    [self config];
}

-(void)awakeFromNib {
    [super awakeFromNib];
    [self config];
}

@end
您可以看到它在Xcode 7的IB中运行良好:


你不能在
drawRect
中玩你的
图层。那不是绘画!绘画是关于内容的

将该代码移到其他地方,例如
从NIB唤醒
prepareforPrinterFaceBuilder
(两者都有),一切都会好起来

下面是示例代码:

@implementation RoundedCornerButton

-(void) config {
    self.layer.borderWidth = self.borderWidth;
    self.layer.borderColor = self.borderColor.CGColor;
    [self.layer setCornerRadius:self.cornerRadius];
    self.clipsToBounds = YES;
}

-(void)prepareForInterfaceBuilder {
    [self config];
}

-(void)awakeFromNib {
    [super awakeFromNib];
    [self config];
}

@end
您可以看到它在Xcode 7的IB中运行良好:


你不能在
drawRect
中玩你的
图层。那不是绘画!绘画是关于内容的

将该代码移到其他地方,例如
从NIB唤醒
prepareforPrinterFaceBuilder
(两者都有),一切都会好起来

下面是示例代码:

@implementation RoundedCornerButton

-(void) config {
    self.layer.borderWidth = self.borderWidth;
    self.layer.borderColor = self.borderColor.CGColor;
    [self.layer setCornerRadius:self.cornerRadius];
    self.clipsToBounds = YES;
}

-(void)prepareForInterfaceBuilder {
    [self config];
}

-(void)awakeFromNib {
    [super awakeFromNib];
    [self config];
}

@end
您可以看到它在Xcode 7的IB中运行良好:


你不能在
drawRect
中玩你的
图层。那不是绘画!绘画是关于内容的

将该代码移到其他地方,例如
从NIB唤醒
prepareforPrinterFaceBuilder
(两者都有),一切都会好起来

下面是示例代码:

@implementation RoundedCornerButton

-(void) config {
    self.layer.borderWidth = self.borderWidth;
    self.layer.borderColor = self.borderColor.CGColor;
    [self.layer setCornerRadius:self.cornerRadius];
    self.clipsToBounds = YES;
}

-(void)prepareForInterfaceBuilder {
    [self config];
}

-(void)awakeFromNib {
    [super awakeFromNib];
    [self config];
}

@end
您可以看到它在Xcode 7的IB中运行良好:



指定的IBDesignable在哪里?很好,您向我们显示了错误,但您还需要向我们显示代码。是的,很好,我看到了问题。指定的IBDesignable在哪里?很好,您向我们显示了错误,但您也需要向我们显示代码。是的,很好,我看到问题了。您的IBDesignable指定在哪里?很好,您向我们显示了错误,但您还需要向我们显示您的代码。是的,非常好,我看到问题了。您的IBDesignable指定在哪里?很好,您向我们显示了错误,但您也需要向我们显示您的代码。是的,非常好,我看到了问题。感谢您的支持。但是我仍然在Xcode 7.0上遇到了这个错误,现在我将Xcode更新为7.1,错误消失了。我不确定,但这似乎是Xcode 7.0的错误。尽管如此,我所说的仍然是很好的建议!相信我。好吧,我会按照你的建议去做,但我不能确定你的答案是否是根本原因。因为它无法再次清除Xcode 7.0上奇怪的红色警告,非常感谢您的快速响应。嗯,我不能同意。看,我添加了代码和屏幕截图。这在Xcode 7上运行良好。好的,matt,我会再试一次,并尽快回复感谢您的支持。但是我仍然在Xcode 7.0上遇到了这个错误,现在我将Xcode更新为7.1,错误消失了。我不确定,但这似乎是Xcode 7.0的错误。尽管如此,我所说的仍然是很好的建议!相信我。好吧,我会按照你的建议去做,但我不能确定你的答案是否是根本原因。因为它无法再次清除Xcode 7.0上奇怪的红色警告,非常感谢您的快速响应。嗯,我不能同意。看,我添加了代码和屏幕截图。这在Xcode 7上运行良好。好的,matt,我会再试一次,并尽快回复感谢您的支持。但是我仍然在Xcode 7.0上遇到了这个错误,现在我将Xcode更新为7.1,错误消失了。我不确定,但这似乎是Xcode 7.0的错误。尽管如此,我所说的仍然是很好的建议!相信我。好吧,我会按照你的建议去做,但我不能确定你的答案是否是根本原因。因为它无法再次清除Xcode 7.0上奇怪的红色警告,非常感谢您的快速响应。嗯,我不能同意。看,我添加了代码和屏幕截图。这在Xcode 7上运行良好。好的,matt,我会再试一次,并尽快回复感谢您的支持。但是我仍然在Xcode 7.0上遇到了这个错误,现在我将Xcode更新为7.1,错误消失了。我不确定,但这似乎是Xcode 7.0的错误。尽管如此,我所说的仍然是很好的建议!相信我。好吧,我会按照你的建议去做,但我不能确定你的答案是否是根本原因。因为它无法再次清除Xcode 7.0上奇怪的红色警告,非常感谢您的快速响应。嗯,我不能同意。看,我添加了代码和屏幕截图。这在Xcode 7上运行良好。好的,马特,我会再试一次并尽快回复