标签: ibinspectable

@IBDesignable 不呈现 UILabel 和 UITextField 文本

我创建了一个 @IBDesignable 子类 UIView

该视图有几个标签和一个文本字段。

当我尝试在故事板中更改它们的值时,不会呈现这些更改。在cornerRadius 的不断变化中,borderWidth 和borderColor 在故事板上呈现。

我错过了什么?

这是它在故事板中的样子:

在此处输入图片说明

这是它在模拟器中的外观以及我希望它在渲染后在故事板中的外观

在此处输入图片说明

这是该类的代码:

import UIKit

@IBDesignable

class LoginTextField: UIView {


    @IBInspectable var cornerRadius: CGFloat = 0 {
        didSet {
            layer.cornerRadius = cornerRadius
            layer.masksToBounds = cornerRadius > 0
        }
    }
    @IBInspectable var borderWidth: CGFloat = 0 {
        didSet {
            layer.borderWidth = borderWidth
        }
    }
    @IBInspectable var borderColor: UIColor? {
        didSet {
            layer.borderColor = borderColor?.cgColor
        }
    }

    @IBInspectable var title: String = "" {
        didSet {
            titleLabel.text = title
        } …
Run Code Online (Sandbox Code Playgroud)

xcode ios swift ibdesignable ibinspectable

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

当另一个属性的计数增加时,生成更多属性

基本上,我有一个视图,其中可以有无限量的UIViews.我希望能够设置self.numberOfSections = 8self.numberOfSections = 2然后UIImages分别生成相同数量的生成,然后可以进行操作.

目前IBInspectible我的代码中有很多图像,无论我有2个numberOfSections还是100个numberOfSections.我想以某种方式能够UIImages基于我的numberOfSections数字创建.

rotaryWheelView

storyBoardInspect

如果我在这里将Number Of Sections设置为2 - 我可以在故事板中设置图像,但是所有其他IBInspectable元素也会显示为不会被使用,因为只有2个部分.有没有办法只显示所需的那些?我想在故事板中设置图像.有没有办法重构这一点,以便没有这么多的IBInspectables?

这就是我如何将图像设置为代码中各种以编程方式生成的视图.

-(void)drawRect:(CGRect)rect

    for (int i = 0; i < self.numberOfSections; i++) {
       NSString *rotaryName = [NSString stringWithFormat:@"rotaryImage%d", i + 1];
       id rotaryNameValue = [self valueForKey:rotaryName];
       [self.sectorView setValue:rotaryNameValue forKey:@"image"];
    }
}
Run Code Online (Sandbox Code Playgroud)

objective-c uiimage ios ibdesignable ibinspectable

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

访问 @IBInspectable UIImage 时界面生成器代理崩溃

UIView我正在通过子类化并使用@IBInspectable一些变量来实现自定义视图。其中两个是 UIImage。如果我尝试在代码中访问其中之一,界面生成器会崩溃并显示以下消息:

file:///PathToMyProject/MyProject/Pod/Classes/UI/View/MyView.xib: error: IB Designables: Failed to update auto layout status: The agent crashed
Run Code Online (Sandbox Code Playgroud)

file:///PathToMyProject/MyProject/Pod/Classes/UI/View/MyView.xib: error: IB Designables: Failed to render instance of MyView: The agent crashed
Run Code Online (Sandbox Code Playgroud)

一切在模拟器和设备上运行良好。以下是重现它的方法,假设image_one.png位于资产中:

import UIKit

@IBDesignable
class MyView: UIView {

    @IBInspectable
    var anImage: UIImage = UIImage(named: "image_one")!

}
Run Code Online (Sandbox Code Playgroud)

事实上,界面生成器代理在初始化该变量时崩溃。如果您编写var anImage: UIImage! = UIImage(named: "image_one"),则代理在访问此变量时会崩溃(如上所述)。

有任何想法吗?

interface-builder uiview ios ibinspectable

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

创建IBInspectable unicode字符

我使用像(http://fontastic.me/)这样的网站创建了一些图标字体,它给你.ttf文件.

你可以用它

myLable.text = "\u{e002}" //?
print("\u{e002}")     //?
print("\u{1F496}")   //
Run Code Online (Sandbox Code Playgroud)

这很好用,但我想直接使用storyboard传递字符串.

然后我开始使用UILabel Subclass并为unicode字符串创建@IBInsectable.但这不起作用.以下是IBInspectable的代码.

@IBInspectable internal var myString: String? {
        didSet {
            text = "\u{e002}"       //?          this works
            text = "\\u{\(myString)}" //\u{e002}    this not
        }
Run Code Online (Sandbox Code Playgroud)

要么

let myString = "e002"
print("\\u{\(myString)}")   //\u{e002}
Run Code Online (Sandbox Code Playgroud)

即使这也行不通

print(myString)
text = String(UTF8String: myString!)
Run Code Online (Sandbox Code Playgroud)

但这只打印文本,它打算像print("\u{e002}")这样打印Icon .怎么解决这个问题,我错过了什么?

提前感谢您的帮助.

unicode icons ios ibinspectable swift2

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

使用IBInspectable时,界面构建器如何决定何时引入分隔符

现在,我正在创建一个自定义视图,并且想知道如何interface builder确定何时引入一行。

在此处输入图片说明

如您所见,它分为3个部分。sub groups但是我想知道如何确定子组的开始和结束位置。

因为我所做的就是IBInspectables像这样在彼此之间创建了底层。

@IBInspectable var dotCount: Int = 0 { didSet { setup() } }

@IBInspectable var dotSize: CGFloat = 7 { didSet { dotSize = dotSize + 1.5 } }

@IBInspectable var dotSpacing: CGFloat = 10

@IBInspectable var dotColor: UIColor = UIColor.clear {
    didSet {
        for dot in dots {
            if let dot = dot, dot != selectedView {
                dot.backgroundColor = dotColor
            }
        }
    }
}

@IBInspectable var borderWidth: CGFloat = …
Run Code Online (Sandbox Code Playgroud)

xcode interface-builder ibdesignable ibinspectable

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

想要通过@IBInspectable实现键盘选择

我想从@IBInspectabale创建键盘选择

键盘选择

如何做到这一点

我正在创建一个视图,在其中插入ImageView和TextField,现在,我将该自定义视图类创建为@IBDesignable并创建了@IBInspectable元素。

我成功创建了侧面图像和占位符元素,但是现在我尝试创建键盘类型,但遇到了问题。

代码片段:`import UIKit

@IBDesignable类CustomTextField:UIView,UITextFieldDelegate {

//custom view from the XIB file
var view: UIView!

@IBOutlet weak var textField: UITextField!
@IBOutlet weak var imageView: UIImageView!

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

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    loadViewFromNib ()
}

func loadViewFromNib() {
    let bundle = Bundle(for: type(of: self))
    let nib = UINib(nibName: "CustomTextField", bundle: bundle)
    let view = nib.instantiate(withOwner: self, options: nil)[0] as! UIView
    view.frame = bounds
    view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    self.addSubview(view);



} …
Run Code Online (Sandbox Code Playgroud)

keyboard ios swift ibdesignable ibinspectable

4
推荐指数
2
解决办法
766
查看次数

如何在Swift 3中使用@IBInspectable分别控制UIView的圆角?

这是我当前的代码:

override func viewDidLoad() {
    super.viewDidLoad()

    let rect = Draw(frame: CGRect(
        origin: CGPoint(x: 50, y: 50),
        size: CGSize(width: 100, height: 100)))
    self.view.addSubview(rect)
}
Run Code Online (Sandbox Code Playgroud)

uiview ios swift ibinspectable

4
推荐指数
2
解决办法
650
查看次数

使用@ IBDesigable/@ IBInspectable在故事板中的按钮上不显示转角半径

我有一个按钮的自定义类.

import UIKit

@IBDesignable
class CustomButton: UIButton {

    @IBInspectable var cornerRadiusValue: CGFloat = 10.0 {
        didSet {
            setUpView()
        }
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.layer.cornerRadius = 10.0
    }

    override func awakeFromNib() {
        setUpView()
    }

    override func prepareForInterfaceBuilder() {
        super.prepareForInterfaceBuilder()
        setUpView()
    }

    func setUpView() {
        self.layer.cornerRadius = 10.0
    }

}
Run Code Online (Sandbox Code Playgroud)

但是角落半径没有显示在故事板中的按钮上.

我理解@IBInspectable只允许您更改检查器面板中的值.我想这不是我想要的.

当我创建一个具有该类的按钮时,我希望角落半径只显示在故事板中.我认为这就是@IBDesignable的作用.

uibutton uistoryboard swift ibdesignable ibinspectable

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

以编程方式设置 IBInspectable

我想根据我获得的互联网信息设置不同的 IBInspectable 项目。例如,我有绿色、红色和橙色圆圈的 IBInspectables。如果请求说绿色,我想将 isGreen Inspectionable 设置为 Yes,将其他设置为 no。其他两个也是如此。您可以在此处查看 IBInspectables 。我知道我可以使用我放入其中的代码来完成此操作,但是有没有办法以编程方式切换它们?

storyboard ios swift ibinspectable

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

使用IBInspectable在选定状态下的UIButton边框颜色

我正在使用像这样的Swift扩展@IBInspectable来设置边框颜色UIButton:

extension UIButton {
  @IBInspectable var borderWidth: CGFloat {
    get {
      return layer.borderWidth
    }
    set {
      layer.borderWidth = newValue
      layer.masksToBounds = newValue > 0
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

...但我也想拥有按钮状态的selectedBorderColor属性.Selected.这可能是这样的扩展吗?我是否必须以UIButton某种方式继承并检查按钮状态?

extension UIButton {
  @IBInspectable var borderWidth: CGFloat {
    get {
      return layer.borderWidth
    }
    set {
      layer.borderWidth = newValue
      layer.masksToBounds = newValue > 0
    }
  }
  //This is what I want to do...
  @IBInspectable var selectedBorderWidth: CGFloat {
    get {
      return layer.borderWidth
    } …
Run Code Online (Sandbox Code Playgroud)

uibutton ios swift swift-extensions ibinspectable

2
推荐指数
1
解决办法
3225
查看次数