标签: ibinspectable

IB_DESIGNABLE,IBInspectable - 接口构建器不更新

我有以下代码集:

CustomView.h

#import <UIKit/UIKit.h>

IB_DESIGNABLE
@interface CustomView : UIView

@property (nonatomic) IBInspectable UIColor *borderColor;
@property (nonatomic) IBInspectable CGFloat borderWidth;
@property (nonatomic) IBInspectable CGFloat cornerRadius;

@end
Run Code Online (Sandbox Code Playgroud)

CustomView.m

#import "CustomView.h"

@implementation CustomView

- (void)setBorderColor:(UIColor *)borderColor {
    _borderColor = borderColor;
    self.layer.borderColor = borderColor.CGColor;
}

- (void)setBorderWidth:(CGFloat)borderWidth {
    _borderWidth = borderWidth;
    self.layer.borderWidth = borderWidth;
}

- (void)setCornerRadius:(CGFloat)cornerRadius {
    _cornerRadius = cornerRadius;
    self.layer.cornerRadius = cornerRadius;
}

@end
Run Code Online (Sandbox Code Playgroud)

(对于Swift参考,Swift代码也出现了这个问题)

CustomView.swift

@IBDesignable
class CustomView : UIView {
    override init(frame: CGRect) {
        super.init(frame: frame)
    }

    required init(coder aDecoder: …
Run Code Online (Sandbox Code Playgroud)

interface-builder ios ibdesignable ibinspectable

89
推荐指数
6
解决办法
4万
查看次数

如何在Objective-C中设置IBInspectable的默认值?

我知道IBInspectable-properties的默认值可以设置为:

@IBInspectable var propertyName:propertyType = defaultValue在斯威夫特.但是我如何在Objective-C中实现类似的效果,以便我可以在Interface Builder中将某些属性的默认值设置为某些属性?

xcode objective-c interface-builder swift ibinspectable

63
推荐指数
1
解决办法
3万
查看次数

IBDesignable构建失败

我有创建IBDesignableIBInspectable自定义类,为视图提供阴影和角半径

但是当我分配Designable类时view,我得到了Designable Build Failed

这是我的代码

import Foundation

import UIKit

@IBDesignable
class DesignableView: UIView {
}

@IBDesignable
class DesignableButton: UIButton {
}

@IBDesignable
class DesignableLabel: UILabel {
}

@IBDesignable
class DesignableTableView: UITableView {

}

extension UIView {

    @IBInspectable
    var cornerRadius: CGFloat {
        get {
            return layer.cornerRadius
        }
        set {
            layer.cornerRadius = newValue
        }
    }

    @IBInspectable
    var borderWidth: CGFloat {
        get {
            return layer.borderWidth
        }
        set {
            layer.borderWidth = newValue
        }
    }

    @IBInspectable
    var …
Run Code Online (Sandbox Code Playgroud)

xcode ios swift ibdesignable ibinspectable

20
推荐指数
4
解决办法
1万
查看次数

您可以使用类别/扩展名向UIView添加IBDesignable属性吗?

对于那些不知道我在说什么的人,Xcode 6.0增加了新功能,IBDesignable和IBInspectable.

使用IBInspectable属性标记自定义视图时,这些属性将显示在IB中的"属性"检查器中.

同样,当您使用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吗?

interface-builder ios xcode-storyboard ibdesignable ibinspectable

17
推荐指数
2
解决办法
9851
查看次数

Interface Builder的全局调色板

在swift中,我正在编写一个扩展(如Obj-C类),它在代码类方法中维护"房屋颜色".我想知道是否有一种方法可以使用IBInspectable或其他东西使接口构建器可以访问此颜色扩展,而不是将颜色专门附加到UIView子类,就像我在很多IBInspector样本用法中看到的那样.

extension UIColor {
    // house blue
    @IBInspectable var houseBlue: UIColor { return UIColor(red:(51/255), green:(205/255), blue:(255/255), alpha:(1)) }

    // house gray
    @IBInspectable var houseGray: UIColor { return UIColor(white:0.4, alpha: 1) }

    // house white
    @IBInspectable var houseWhite: UIColor { return UIColor.whiteColor() }
}
Run Code Online (Sandbox Code Playgroud)

interface-builder uicolor ios swift ibinspectable

11
推荐指数
1
解决办法
1573
查看次数

资产目录命名颜色不可用于@IBInspectable属性

对于我正在创建的iPad应用程序,我的项目中有一个包含多个颜色集的资产目录.我知道我可以将这些拖放到代码本身,并为@IBInspectable类属性的默认颜色这样做.但是,当我在Interface Builder中使用它们时,我的颜色集可用于UIView的背景颜色等属性,但它们不适用于@IBInspectable允许用户设置颜色的任何属性.有没有办法将我的颜色集暴露给我的@IBInspectable类到Interface Builder中可以选择的位置?当然,我总是可以通过编程方式设置它们,但是为了将来使用和方便起见,如果Apple目前支持它,我想让它工作.如果该信息相关,我的色彩资产目录肯定会添加到我的构建设置中的项目的Bundle Resources中.

我的问题截图:

第一张图像显示了我的颜色集可以选择的位置,如UIView的背景.接下来的两个展示了我们的@IBInspectable房产无法使用的地方.

可为UIView背景选择颜色组

@IBInspectable属性显示颜色集缺失

@IBInspectable属性无法选择颜色集

interface-builder uicolor asset-catalog swift ibinspectable

11
推荐指数
1
解决办法
786
查看次数

IBInspectable UIEdgeInsets未在IBOutlet中显示

我正在创建一个自定义类UIButton来增加挖掘区域.我需要用户可以在故事板中输入填充.所以我做了一个IBInspectable房产.

@IBDesignable class UIIconButton: UIButton {
    @IBInspectable var touchPadding:UIEdgeInsets = UIEdgeInsetsZero
}
Run Code Online (Sandbox Code Playgroud)

但它没有在故事板中显示.但是,如果用CGRect它替换它,那么它在故事板中是可见的.

storyboard xib ios ibinspectable xcode7

10
推荐指数
1
解决办法
2066
查看次数

Xcode 9:使用带有IBDesignable和IBInspectable的命名颜色会导致Interface Builder错误,但编译没有问题

UIColor.named("myColor")自Xcode 9问世以来,我在整个应用程序中使用.虽然我在UITextField一个IBDesignable类的自定义实现中有一个镜头,但我一直收到以下错误:

错误:IB Designables:无法呈现和更新ViewController()的自动布局状态:代理程序崩溃

此外,我的类有几个IBInspectable属性,包括类型UIColor,但在这些属性的Interface Builder下拉列表中,我只能选择标准颜色,我的命名颜色不会像标准类属性那样显示.

以后一个问题作为第一个问题的线索,不满意和临时的解决方案是在我的IBDesignable课堂上不使用命名颜色.或者,不使用IBDesignable.

这可能是一个错误,但我想知道其他人是否遇到过这个问题,如果有任何修复,他们会想出来.

uicolor swift ibdesignable ibinspectable xcode9

10
推荐指数
1
解决办法
1350
查看次数

使用IBDesignable和prepareForInterfaceBuilder与UILabel

我有一个我正在创建的UIView被调用的子类MyView.

其中有一个UILabel(由于原因,这是在代码中添加而不是在InterfaceBuilder中).

然后,我有一个MyView被叫的财产color.

我想要的是让Interface Builder能够选择color,然后显示标签,并将字体设置为该颜色.

我的代码中有......

@IBDesignable class MyView: UIView {

    private let textLabel = UILabel()

    @IBInspectable var color: UIColor = .blackColor() {
        didSet {
            textLabel.textColor = color
        }
    }

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        initialSetup()
    }

    override init(frame: CGRect) {
        super.init(frame: frame)

       initialSetup()
    }

    private func initialSetup() -> Void {
        self.backgroundColor = .clearColor()

        textLabel.textAlignment = .Center
        textLabel.numberOfLines = 0

        addSubview(textLabel)
    }

    override func layoutSubviews() { …
Run Code Online (Sandbox Code Playgroud)

interface-builder ios swift ibdesignable ibinspectable

9
推荐指数
1
解决办法
9421
查看次数

@IBDesignable - @IBInspectable,类不符合键值编码

使用@IBDesignable类时,我突然发现一个奇怪且可重现的错误,@ IBInspectable属性发出以下警告:

Main.storyboard:warning:IB Designables:忽略"UIButton"实例上关键路径"test"的用户定义的运行时属性.尝试设置其值时遇到异常:[setValue:forUndefinedKey:]:此类与密钥测试不符合密钥值编码.

要明确这个警告只是Xcode中的一个问题,它打包很好.仍然很烦人!

重现步骤

  1. 创建新项目
  2. 使用@IBInspectable String属性创建自定义的@IBDesignable UIButton子类:

    import UIKit
    
    @IBDesignable
    class TempButton: UIButton {
        @IBInspectable var test:String = ""
    }
    
    Run Code Online (Sandbox Code Playgroud)
    1. 将一个Button拖到故事板中的View Controller,并在Identity Inspector中为其提供自定义类"TempButton".
    2. 现在,"测试"属性应出现在"临时按钮"属性的"属性"检查器中 - 在此字段中键入任何内容.
    3. 巴姆!出现上述警告.从字段中删除文本,警告消失.

我尝试了几个解决方案 - 不同的变量名称,使'test'属性成为可选,使用初始化程序,到目前为止没有运气.

以下是问题的截屏:

在此输入图像描述

storyboard swift ibdesignable ibinspectable

9
推荐指数
2
解决办法
4021
查看次数