【问题标题】:Clear IBDesignable views have black background清除 IBDesignable 视图有黑色背景
【发布时间】:2015-01-02 17:20:51
【问题描述】:

我正在尝试创建一个 IBDesignable 类,该类在 Interface Builder 中呈现时可以具有透明背景。到目前为止,我已经得到了不透明的黑色背景。我已经设置了一个简单的问题演示:

我在 Interface Builder 的这个场景中放置了一个 UIView。你看不到它,因为它的背景很清楚。这就是场景应该的样子。

此屏幕截图的唯一区别是我将之前不可见视图的类设置为“DesignableView”。

这是 DesignableView 类的完整实现:​​

#import <UIKit/UIKit.h>

IB_DESIGNABLE
@interface DesignableView : UIView
@end

@implementation DesignableView
- (void)drawRect:(CGRect)rect {
    //rendering code goes here
}
@end

有没有办法为 IBDesignable 视图提供正确、透明的背景?

【问题讨论】:

  • 如果你没有使用drawRect:,你应该把它注释掉;它影响性能。这也可能是问题
  • 确实有一个空的drawRect: 实现是一个坏主意,但是这一点与这个问题无关。在此示例中,drawRect: 函数为空,因为它是重现 IB 中黑色背景问题的最简单方法。

标签: ios objective-c swift interface-builder ibdesignable


【解决方案1】:

我只记得我是如何解决这个问题的。你需要覆盖layoutSubviews

- (void)layoutSubviews
{
    [super layoutSubviews];

    self.backgroundColor = [UIColor clearColor];
}

【讨论】:

  • 谢谢,克里斯!这很好用。我发现当在prepareForInterfaceBuilder 函数中调用设置self.backgroundColor 时,这个技巧也有效,这可能是一个更可取的地方。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-23
相关资源
最近更新 更多