我可以让我的UIView @property可以检查吗?
@interface Superview : UIView
@property (nonatomic, weak, readonly) IBInspectable UIButton *stopButton;
@property (nonatomic, weak, readonly) IBInspectable PKCircleProgressView *circleProgressView;
@end
Run Code Online (Sandbox Code Playgroud)
我已经创建了一个可设计的视图PKCircleProgressView,我希望它可以从IB编辑.此外,我创建了另一个可设计的视图,其中包含PKCircleProgressView作为子视图,我希望它也可以编辑.
如果我在IB中使用Superview,有没有办法编辑circleProgressView的属性?
我只想出一个想法,为两个视图创建一个通用协议,并实现如下方法:
- (void)setProgress:(CGFloat)progress {
self.circleProgressView.progress = progress;
}
Run Code Online (Sandbox Code Playgroud)
但是对每个属性都不容易,特别是如果我想创建另一个包含我的Superview的View.
我使用以下方法在我的应用程序委托中设置 UILabel 外观:
UILabel.appearance().textColor = UIColor.white
Run Code Online (Sandbox Code Playgroud)
我还有一个自定义 UIView 子类,其中包含 UILabel 以及一些其他元素(此处省略):
@IBDesignable
class CustomView: UIView {
private let descriptionLabel = HCLabel()
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
override func awakeFromNib() {
super.awakeFromNib()
self.setup()
}
private func setup() {
self.descriptionLabel.textColor = UIColor.black
// ... other things not related to descriptionLabel
}
}
Run Code Online (Sandbox Code Playgroud)
如果我CustomView在故事板中实例化,一切都会正常工作。但是,如果我在代码中实例化它,则descriptionLabel是白色(外观颜色),而不是黑色(我设置的颜色)。这里发生了什么?我的理解是,如果我设置自定义颜色,则不会使用外观颜色。
我有一个简单的@IBDesignable视图,已将其指定为macOS故事板场景中的顶级视图的基类。例如:
@IBDesignable
class OvalView: NSView {
override func draw(_ dirtyRect: NSRect) {
super.draw(dirtyRect)
NSColor.red.setFill()
NSBezierPath(ovalIn: bounds).fill()
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序时,此视图看起来很好。但是这个可设计的视图没有在Interface Builder中呈现在我的场景中:
注意,仅当相关视图是场景的顶级视图时,此问题才会显现。如果我对子视图执行此操作,则效果很好:
我想制作自定义UINavigationItem,并且可以在故事板中进行更改.我知道如何UIView使用@IBDesignable和定制@IBInspectable,但我的问题是UINavigationItem没有draw方法,required init?(coder aDecoder: NSCoder)很快就会被调用.
如何解决这个问题的最佳方法是什么?
我尝试使用自定义的xib文件。但是这些UI并未显示在xcode的主视图控制器中。但是它会在运行应用程序时显示。我已经在类中添加了@IBDesignable。这是我所做的。
我创建了TestView.xib并添加了一些设计
我创建了TestView.swift
我在自定义类中使用TestView更新了TestView.xib的fileOwner
我将初始化代码添加到testView.swift
import UIKit
@IBDesignable class DetailView: UIView {
override init(frame: CGRect){
super.init(frame: frame)
self.setup()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
self.setup()
}
func setup() {
let view = Bundle.main.loadNibNamed("TestView", owner: self, options: nil)?.first as! UIView
view.frame = self.bounds
self.addSubview(view)
}
}
Run Code Online (Sandbox Code Playgroud)
并在MainViewController的UIView上添加了该链接,并使用自定义类名称链接到TestView。
之后,我运行该应用程序,可以从testView看到UI。仿真器图像和结果
如何启用MainViewController中的自定义UI?谢谢
我对IBDesignables和比较陌生IBInspectable,我注意到很多教程都IBInspectable以这种方式使用。
@IBInspectable var buttonBorderWidth: CGFloat = 1.0 {
didSet {
updateView()
}
}
func updateView() {
// Usually there are more entries here for each IBInspectable
self.layer.borderWidth = buttonBorderWidth
}
Run Code Online (Sandbox Code Playgroud)
但在某些情况下,他们会像这样使用 get 和 set
@IBInspectable
var shadowOpacity: Float {
get {
return layer.shadowOpacity
}
set {
layer.shadowOpacity = newValue
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下:每种情况下发生了什么以及如何选择使用哪一种?
我有一个这样的类,并且此IB foo1在检查窗格中未显示该属性。
@IBDesignable
final class Foo: UIView {
@IBInspectable var bar1 = CGFloat(0)
}
Run Code Online (Sandbox Code Playgroud)
怎么了?
(Xcode 10.1)
我已经为 UITableView 单元格创建了自定义视图。当应用程序运行并且填充 UITableView 时,我收到太多与设计相关的警告。让我快速分享我收到的设计日志
[LayoutConstraints] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want.
Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
(
"<NSLayoutConstraint:0x600000a8c530 H:[UIView:0x7fcc025a6390]-(1)-| (active, names: '|':UIView:0x7fcc025a5dc0 )>",
"<NSLayoutConstraint:0x600000a8c620 H:|-(1)-[UIView:0x7fcc025a6390] (active, names: '|':UIView:0x7fcc025a5dc0 )>",
"<NSLayoutConstraint:0x600000a8cb20 H:|-(0)-[UIView:0x7fcc025a5dc0] (active, names: '|':UITableViewCellContentView:0x7fcc025a58a0 )>",
"<NSLayoutConstraint:0x600000a8cbc0 H:[UIView:0x7fcc025a5dc0]-(0)-| (active, names: …Run Code Online (Sandbox Code Playgroud) 我是初学者。我想制作一个包含使Designable UIImage可用的代码的swift文件,所以我不会通过编码来编辑UI元素的显示,而只是在Interface Builder中通过将该swift文件分配给UI类来进行编辑。
我可以在UIButton中做类似的事情,例如,如果我想做圆角并向UIButton添加边框,我可以做这样的事情
import UIKit
@IBDesignable
class DesignableButton: UIButton {
@IBInspectable var cornerRadiusOfButton : CGFloat = 0 {
didSet {
layer.cornerRadius = cornerRadiusOfButton
}
}
@IBInspectable var borderWidth: CGFloat {
set {
layer.borderWidth = newValue
}
get {
return layer.borderWidth
}
}
@IBInspectable var borderColor: UIColor? {
set {
guard let uiColor = newValue else { return }
layer.borderColor = uiColor.cgColor
}
get {
guard let color = layer.borderColor else { return nil }
return UIColor(cgColor: color)
}
} …Run Code Online (Sandbox Code Playgroud) ibdesignable ×10
swift ×7
ios ×6
xcode ×3
uiview ×2
autolayout ×1
iphone ×1
macos ×1
swift3 ×1
uiappearance ×1
uibutton ×1
uiimage ×1
uiimageview ×1
uilabel ×1
xcode9 ×1