标签: ibinspectable

静态库,捆绑和IB可设计

我正在尝试在我的UIButton中使用IB Designable和IB Inspectable,但似乎有一些错误.

在问题导航器中,捆绑文件:

故事板: IB Designables:无法更新自动布局状态:无法从路径加载designabled(null)

所以我想知道是否有任何配置可以在静态库或类似的东西中使用它?

这是

#import <UIKit/UIKit.h>

IB_DESIGNABLE

@interface CustomUIButton : UIButton

@property (nonatomic) IBInspectable int cornerRadius;

@end
Run Code Online (Sandbox Code Playgroud)

我想要实时渲染的自定义按钮位于视图控制器内

bundle storyboard ios ibdesignable ibinspectable

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

使NSArray IBInspectable

有一种方法可以NSArray IBInspectable在Storyboard自定义视图中定义多个值吗?

我知道NSArray没有关于将存储在其中的对象类型的任何信息,所以它可能是一个问题.但是有一些解决方案使用注释或其他东西?

我想要做的是设置NSArrayUIColors通过故事板和可视化的故事板绘制在视图中的渐变层.

我开始创建两个名为startColor和endColor的属性.这工作正常,但我想这样做更通用.

这是我的drawRect方法:

- (void)drawRect:(CGRect)rect {
    CAGradientLayer *gradientLayer = [CAGradientLayer layer];

    gradientLayer.frame = self.bounds;

    gradientLayer.colors = [NSArray arrayWithObjects:(id)[self.startColor CGColor], (id)[self.endColor CGColor], nil];

    [self.layer addSublayer:gradientLayer];
}
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情:

- (void)drawRect:(CGRect)rect {
    CAGradientLayer *gradientLayer = [CAGradientLayer layer];

    gradientLayer.frame = self.bounds;

    // colorsArray should be an IBInspectable property in order to be setted on Storyboard Attributes Inspector
    gradientLayer.colors = self.colorsArray;

    [self.layer addSublayer:gradientLayer];
}
Run Code Online (Sandbox Code Playgroud)

objective-c nsarray ios ibdesignable ibinspectable

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

IBDesignables的某种"全球"?

在故事板中有一个UIView,具有约束例如"0.1"比例高度.

想象一下,对于许多不同场景中的视图,您有类似的约束"0.1".

假设您要将值更改为0.1到0.975.

你必须在任何地方单独改变它.

有没有办法使用@IBInspectable和/或约束来形成一种"全局价值"

这样您就可以立即更改所有内容,并在故事板中同时查看结果.

(当然,在运行时你可以在代码中传播它们.但最好在故事板上看到它.)


请注意,Wain的解决方案可以完美地运行:您可以设置一次值,并影响应用程序中的任何位置.但不幸的是,它只在运行时才这样做,你没有在故事板上看到它.

ios uistoryboard nslayoutconstraint ibinspectable

7
推荐指数
1
解决办法
644
查看次数

如何设置IBInspectable Int的最大限制

我在Swift中使用IBInspectable Int来选择4种形状(0-3),但是在故事板编辑器中可以设置大于3且小于0的值,这会阻止IBDesignable系统工作.

是否可以设置故事板编辑器中可以设置的值的最小和最大限制?

let SHAPE_CROSS = 0
let SHAPE_SQUARE = 1
let SHAPE_CIRCLE = 2
let SHAPE_TRIANGLE = 3

@IBInspectable var shapeType: Int = 0
@IBInspectable var shapeSize: CGFloat = 100.0
@IBInspectable var shapeColor: UIColor?
Run Code Online (Sandbox Code Playgroud)

ios uistoryboard swift ibinspectable

6
推荐指数
1
解决办法
3181
查看次数

如何在Xcode中记录@IBInspectable属性

在我的自定义UIView中,我有一个属性,我将其暴露给故事板@IBInspectable.

/**

My custom property documentation.

*/
@IBInspectable var myProperty: Double = 2.5
Run Code Online (Sandbox Code Playgroud)

当用户将光标悬停在属性检查器中的字段上时,有没有办法显示文档?它适用于内置元素,我想为我的属性做同样的事情.

在此输入图像描述

documentation xcode interface-builder swift ibinspectable

6
推荐指数
1
解决办法
318
查看次数

IBInspectable与Cocoa Touch Framework无法正常工作?(附代码)

我似乎无法获得"titleText"IBInspectable属性.我有一个带有UILabel的简单框架视图,我创建了一个IBInspectable变量"titleText".我注意到可检查的"层"变量按预期工作,但不是我的自定义"titleText",它应该使用此框架更新主视图.

问题是:

  1. Interface Builder没有更新titleLabel?(即在设计时),即我希望这应该,就像它适用于"层"项目.

  2. 在运行时,titleLabel的值也没有获取我在IB中设置的值.请注意,当我运行时,我得到以下输出,即产生这个的代码是发现"self.titleLabel"实际上是零?

代码摘要

在此输入图像描述

(a)gcCustomView.xib快照 在此输入图像描述

(b)gcCustomerView.swift

import UIKit

@IBDesignable 
class gcCustomView: UIView {

    @IBOutlet weak var titleLabel: UILabel!
    @IBInspectable var titleText: String = "Default" {
        didSet {
            if  self.titleLabel != nil {
                self.titleLabel.text = titleText
            } else {
                NSLog("Could not set title text as label.text was nil : was trying to set to \(titleText)")
            }
        }
    }


    @IBInspectable var cornerRadius: CGFloat = 0 {
        didSet {
            layer.cornerRadius = cornerRadius
            layer.masksToBounds = cornerRadius > 0
        }
    }
    @IBInspectable var …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch ibdesignable ibinspectable ios10 xcode8

6
推荐指数
1
解决办法
693
查看次数

我们如何创建 IBInspectable 像复选标记?

我创建了很多 IBInspectable。但是今天,我观察到 Xcode 有一些像这样的属性:

在此处输入图片说明

在链接中,我标记了矩形框。我想创建这样的自定义 IBInspectable。我不知道这可能还是不可能。

任何帮助,将不胜感激。

xcode ios swift ibdesignable ibinspectable

6
推荐指数
1
解决办法
1304
查看次数

如何在 Xcode 的 Interface Builder 中设置计算属性的默认 IBInspectable 值

我有一个自定义UIView类,其中有一个UILabel作为子视图。我想在 Interface Builder 中设置标签的字体大小,因此我创建了一个计算属性fontSize来获取和设置UILabel字体的磅值。

@IBDesignable class UIMongolLabel: UIView {

    private let view = UILabel()

    let mongolFontName = "ChimeeWhiteMirrored" // font is always the same

    @IBInspectable var fontSize: CGFloat {
        get {
            if let font = view.font {
                return font.pointSize
            } else {
                return 0.0
            }
        }
        set {
            view.font = UIFont(name: mongolFontName, size: newValue)
        }
    }

    // ...
}
Run Code Online (Sandbox Code Playgroud)

如果用户设置字体大小的值,则效果很好:

在此输入图像描述

但如果用户只是添加一个新的自定义视图,则字体大小为空。

在此输入图像描述

这里的答案说,在 Swift 中为计算属性设置默认值是没有意义的,但是如果我想要 Interface Builder 的默认值怎么办?我想让它说“17”之类的。我应该怎么办?

xcode interface-builder default-value ios ibinspectable

5
推荐指数
0
解决办法
3260
查看次数

IBInspectable属性在initWithCoder中没有其值:初始值设定项

我在MyClass.h文件中有此文件:

#import <UIKit/UIKit.h>

IB_DESIGNABLE

@interface MyClass : UIView

@end
Run Code Online (Sandbox Code Playgroud)

这是.m文件中的代码:

-(void)awakeFromNib{
    [super awakeFromNib];

    NSLog(@"This works %lud",(unsigned long)self.max);
}

-(instancetype)initWithCoder:(NSCoder *)aDecoder{

    if ((self = [super initWithCoder:aDecoder])){

        NSLog(@"This doesn't work %lud",(unsigned long)self.max);
    }

    return self;
}
Run Code Online (Sandbox Code Playgroud)

在awakeFromNib方法中,我在IB中设置了正确的值。在initWithCoder中:此值等于零。

检查该属性中在IB中设置的值的合适时间是什么?

这就是我在.m文件中定义属性的方式:

@interface MyClass()

@property (nonatomic) IBInspectable NSUInteger max;

@end
Run Code Online (Sandbox Code Playgroud)

xcode objective-c uikit ibdesignable ibinspectable

5
推荐指数
1
解决办法
1069
查看次数

IBInspectable Properties未在XCode 8.3.3中显示

我是xcode开发的新手,在尝试修改我自己项目的IBinspectable属性中的apple教程时,我遇到了一个主要的障碍.

我定义了一个简单的按钮子类:

import UIKit

@IBDesignable public class SocialMediaLoginButton: UIButton {

  private var _loginType: SocialMediaLoginType = .facebook

  @IBInspectable public var loginType: SocialMediaLoginType 
              = SocialMediaLoginType.facebook {

      didSet {
          self._loginType = loginType
      }
  }
}
Run Code Online (Sandbox Code Playgroud)

然后在我的故事板中添加了一个UIButton,然后我选择了CustomClass作为上面的类型.当我切换到属性检查器时,属性不适合我调整.我不知道发生了什么:

属性检查器

我已经查找了其他问题,但是在应用开发人员论坛上有极其过时或没有答案.

我试过了:

  1. 手动刷新视图
  2. 关闭并重新打开xcode
  3. 删除并重新添加控件
  4. 添加不同的控件,如UIView和尝试相同的事情

这些都没有奏效.我对如何解决这个问题感到茫然.我正在使用Xcode 8.3.3

ios swift ibinspectable xcode8

5
推荐指数
2
解决办法
1519
查看次数