我创建了一个 @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) 基本上,我有一个视图,其中可以有无限量的UIViews.我希望能够设置self.numberOfSections = 8或self.numberOfSections = 2然后UIImages分别生成相同数量的生成,然后可以进行操作.
目前IBInspectible我的代码中有很多图像,无论我有2个numberOfSections还是100个numberOfSections.我想以某种方式能够UIImages基于我的numberOfSections数字创建.
如果我在这里将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) 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"),则代理在访问此变量时会崩溃(如上所述)。
有任何想法吗?
我使用像(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 .怎么解决这个问题,我错过了什么?
提前感谢您的帮助.
现在,我正在创建一个自定义视图,并且想知道如何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) 我想从@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) 这是我当前的代码:
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) 我有一个按钮的自定义类.
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的作用.
我想根据我获得的互联网信息设置不同的 IBInspectable 项目。例如,我有绿色、红色和橙色圆圈的 IBInspectables。如果请求说绿色,我想将 isGreen Inspectionable 设置为 Yes,将其他设置为 no。其他两个也是如此。您可以在此处查看 IBInspectables 。我知道我可以使用我放入其中的代码来完成此操作,但是有没有办法以编程方式切换它们?
我正在使用像这样的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) ibinspectable ×10
ios ×8
swift ×6
ibdesignable ×5
uibutton ×2
uiview ×2
xcode ×2
icons ×1
keyboard ×1
objective-c ×1
storyboard ×1
swift2 ×1
uiimage ×1
uistoryboard ×1
unicode ×1