当前位置: 首页 > 编程笔记 >

iOS 使用IBInspectable和IBDesignable

纪正德
2023-03-14
本文向大家介绍iOS 使用IBInspectable和IBDesignable,包括了iOS 使用IBInspectable和IBDesignable的使用技巧和注意事项,需要的朋友参考一下

示例

IBInspectable属性和IBDesignable UIViews是最近Xcode发行版中最酷的一项(或两项)新功能。这些与您的应用程序功能无关,而会影响Xcode中的开发人员体验。目的是能够在不运行iOS的情况下直观地检查自定义视图。因此,假设您有一个自定义视图CustomView,该视图创造性地命名自,继承自UIView。在此自定义视图中,它将显示具有指定颜色的文本字符串。您也可以选择不显示任何文本。我们需要三个属性:

var textColor: UIColor = UIColor.blackColor()
var text: String?
var showText: Bool = true

然后,我们可以覆盖drawRect该类中的函数:

if showText {
    if let text = text {
        let s = NSString(string: text)
        s.drawInRect(rect,
            withAttributes: [
                NSForegroundColorAttributeName: textColor,
                NSFontAttributeName: UIFont(name: "Helvetica Neue", size: 18)!
            ])
    }
}

假设text已设置该属性,则在运行应用程序时,它将在视图的左上角绘制一个字符串。问题是如果不运行该应用程序,我们将不知道它是什么样。这是IBInspectable和IBDesignable进来,  IBInspectable使我们能够在Xcode视图的视觉组属性值,就像内置的控制。  IBDesignable将在情节提要中向我们显示视觉预览。这是该类的外观:

@IBDesignable
class CustomView: UIView {
    @IBInspectable var textColor: UIColor = UIColor.blackColor()
    @IBInspectable var text: String?
    @IBInspectable var showText: Bool = true

    override func drawRect(rect: CGRect) {
        // ...
    }
}

或在目标C中:

IB_DESIGNABLE
@interface CustomView: UIView

@property (nonatomic, strong) IBInspectable UIColor* textColor;
@property (nonatomic, strong) IBInspectable NSString* text;
@property (nonatomic, assign) IBInspectable BOOL showText;

@end

@implementation CustomView

- (instancetype)init {
    if(self = [super init]) {
       self.textColor= [UIColor blackColor];
       self.showText= YES;
    }
    return self;
}

- (void)drawRect:(CGRect)rect {
    //...
}

@end

下一个屏幕截图显示了Xcode中发生的情况。第一个是添加修订的类后发生的情况。请注意,这三个属性有三个新的UI元素。“文本颜色”将显示一个颜色选择器,“文本”只是一个输入框,“显示文本”将为我们提供Off和的选项,分别On是false和true。

接下来是使用颜色选择器将“文本颜色”更改为红色之后。此外,还提供了一些文本来使drawRect函数显示它。请注意,Interface Builder中的视图也已更新。

最后,在属性检查器中将“显示文本”设置为Off会使“界面生成器”中的文本显示消失。

但是,当我们需要UIView在您的多个视图中创建四舍五入时,我们都会遇到这种情况。Storyboard与其声明IBDesignable每个视图Storyboard,不如创建一个ExtensionofUIView并为您的UIView整个项目建立一个专门为您创建的用户界面,都更好通过radius.A在您在情节提要中创建的任何UIView上设置可配置的角边界半径来查看。

extension UIView {
    
    @IBInspectable var cornerRadius:CGFloat {
        set {
           layer.cornerRadius= newValue
            clipsToBounds = newValue > 0
        }
        get {
            return layer.cornerRadius
        }
    }
    
}

 类似资料:
  • 我有一个视图控制器,其中包含一个表视图,所以我想问我应该把表视图数据源和委托放在哪里,它应该是一个外部对象,或者如果我们说VIPER模式,我可以把它写在我的视图控制器中。 Presenter包含interactor,在showSongs方法中,我从interactor请求一些数据,比如:self.interactor.loadSongs() 当歌曲准备好返回到view controller时,我再

  • 问题内容: 如何在Swift中将证书固定到NSURLSession? 该OWASP网站只包含Objective- C和NSURLConnection的一个例子。 问题答案: Swift 3+ 更新: 只需定义一个委托类并实现didReceiveChallenge函数( 此代码改编自Objective-c OWASP示例 ): (您可以在此处找到Swift 2 的Gist- 从初始答案开始) 然后使

  • 问题内容: 不再是iOS 10 SDK中的类: 这无法编译。该课程被删除了吗? (这是规范的问答集,可防止重复出现的问题泛滥) 问题答案: 已重命名为。 已重命名为。 现在可以使用了。 发行前文档链接。

  • 目录 苹果开发帐号说明 苹果证书和X5打包服务器的配合使用 iOS证书申请教程 苹果证书和极光推送的配合使用   苹果开发帐号说明 个人账号(Individual)/公司团队账号 (Company/Organization): 费用都是99美金一年,两者无本质区别,都可以发布应用到苹果市场。 区别在于个人账号在App Store销售者只能显示个人的ID,比如san zhang,单人使用。公司团队账

  • OWASP网站只包含Objective-C和NSURLConnection的示例。

  • 问题内容: 我正在尝试按照Firebase文档上的说明上载缺少的必需dSYM。但是,我一直在运行上传程序脚本。 在我的构建阶段中 当我尝试以此构建iOS应用时,出现错误: 第4行:/ path / to / Pods / FirebaseCrashlytics / upload-symbols -gsp / path / to / GoogleService-Info.plist -p ios /