Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在 Swift 中使用 IBInspectable前言正文结语

在 Swift 中使用 IBInspectable前言正文结语

作者头像
BY
发布于 2018-05-11 07:09:25
发布于 2018-05-11 07:09:25
98300
代码可运行
举报
文章被收录于专栏:BY的专栏BY的专栏
运行总次数:0
代码可运行

taylor swift

前言

通过 IB 设置 控件 的属性非常的方便。

但是缺点也很明显,那就是有一些属性没有暴露在 IB 的设置面板中。这时候就要使用 @IBInspectable 在 IB 面板中添加这些没有的属性。

关于在 OC 中使用 IBInspectable 可以看一下我的 这篇文章

正文

在项目中最常遇到的情况是为 view 设置圆角、描边,以及为 文本控件 添加本地化字符串。

圆角、描边

先来看看设置圆角、描边

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
extension UIView {
    @IBInspectable var cornerRadius: CGFloat {
        get {
            return layer.cornerRadius
        }
        
        set {
            layer.cornerRadius = newValue
            layer.masksToBounds = newValue > 0
        }
    }
    
    @IBInspectable var borderWidth: CGFloat {
        get {
            return layer.borderWidth
        }
        set {
            layer.borderWidth = newValue > 0 ? newValue : 0
        }
    }
    
    @IBInspectable var borderColor: UIColor {
        get {
            return UIColor(cgColor: layer.borderColor!)
        }
        set {
            layer.borderColor = newValue.cgColor
        }
    }
    
}

添加完成就可以在 IB 中设置 view 的这些属性了

运行效果

利用 @IBDesignable 在 IB 中实时显示 @IBInspectable 的样式

创建一个新的 class 继承 UIView ,并且使用 @IBDesignable 声明

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import UIKit

@IBDesignable class IBDesignableView: UIView {

}

在 IB 中,选择 view 的 class 为 我们新建的 IBDesignableView

这样在 IB 调整属性时,这些属性的变化就会实时显示在 IB 中。

本地化字符串

本地化字符串的解决方法和上面的添加圆角一样

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
extension UILabel {
    @IBInspectable var localizedKey: String? {
        set {
            guard let newValue = newValue else { return }
            text = NSLocalizedString(newValue, comment: "")
        }
        get { return text }
    }
}

extension UIButton {
    @IBInspectable var localizedKey: String? {
        set {
            guard let newValue = newValue else { return }
            setTitle(NSLocalizedString(newValue, comment: ""), for: .normal)
        }
        get { return titleLabel?.text }
    }
}

extension UITextField {
    @IBInspectable var localizedKey: String? {
        set {
            guard let newValue = newValue else { return }
            placeholder = NSLocalizedString(newValue, comment: "")
        }
        get { return placeholder }
    }
}

这样,在 IB 中我们就可以利用对应类型的 Localized Key 来直接设置本地化字符串了:

结语

IBInspectable 可以使用这些的类型

  • Int
  • CGFloat
  • Double
  • String
  • Bool
  • CGPoint
  • CGSize
  • CGRect
  • UIColor
  • UIImage

合理的使用@IBInspectable 能减少很多的模板代码,提高我们的开发效率。

参考

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.05.05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
iOS开发技巧:快速实现 圆角+描边
http://nshipster.cn/ibinspectable-ibdesignable/ 我们来说说如何对某个控件进行圆角、描边处理: 初级 对于一个初学者来说,如果要进行某个控件的圆角、描边设置,就要从Storyboard关联出属性,然后再对属性进行代码处理。 如下代码: self.myButton.layer.cornerRadius = 20; self.myButton.layer.masksToBounds = YES; self.myButton.layer.borderWidth
BY
2018/05/11
1.8K0
百思不得姐数据挖掘第二篇
首先进入的是启动的界面,我们已经在上一篇做好了。第一次启动之后会出现一个宣传的视频,是下面的界面。
君赏
2018/09/07
6330
ios swift模仿qq登陆界面,xml布局
极客学院的视频:http://www.jikexueyuan.com/path/ios/
流川疯
2022/05/06
2.3K0
ios swift模仿qq登陆界面,xml布局
开源项目——『看知乎』iOS 版
前段时间无意中发现了看知乎,一个知乎答案和用户的精选站。网站开发者是知乎用户苏莉安,他写了个爬虫从知乎抓取数据,而且还提供了 API 文档。我大致看了下文档,感觉写个 iOS 客户端应该也挺不错的,于是就开始写了。
Sheepy
2018/09/10
1.3K0
开源项目——『看知乎』iOS 版
《iOS UI 开发捷径 利用 Interface Builder 高效、优雅地开发 UI》 读书笔记第1章 Interface Bundle 概要第2章 使用 Interface Builder第3
第1章 Interface Bundle 概要 ---- Bundle 一种标准化的层次结构,保存了可执行代码及代码所需要的资源。 nib Next Interface Builder Interface Builder 的优点 开发和维护效率高 减少大量的 UI 代码和“胶水代码” 适配变得十分简单 IB 也可以做一些非 UI 的事情 利用 IB 学习控件可以达到事半功倍的效果 Interface Builder 的缺点 IB 的执行效率没有纯代码高 使用 IB 开发的过程中容易出现一些小问题 有一定的学
iOSDevLog
2018/05/17
2.7K0
iOS Core Animation的用法
越上层,封装程度越高,动画实现越简洁越简单,但是自由度越低;反之亦然。本文着重介绍Core Animation层的基本动画实现方案。
码客说
2019/10/22
1.5K0
iOS动画开发之四——核心动画编程(CoreAnimation)
        前几篇博客详细介绍了有关UIView层的动画使用与相关的效果,然而这些动画是UIKit为我们封装好的核心动画层的方法,通过这些方法,我们可以用的更加简便,当然功能也十分强大,基本能达到我们项目的大多需求。但是如果你想更加自由的通过动画操作视图的属性,你就需要跳过UIKit的封装,使用CoreAnimation核心动画层的方法来实现动画。
珲少
2018/08/16
6390
iOS动画开发之四——核心动画编程(CoreAnimation)
ARKit+Swift 版本的机器学习算法 k-NN
在模式识别领域中,最近邻居法(KNN算法,又译K-近邻算法)是一种用于分类和回归的非参数统计方法[1]。在这两种情况下,输入包含特征空间(Feature Space)中的k个最接近的训练样本。
iOSDevLog
2019/04/18
7840
ARKit+Swift 版本的机器学习算法 k-NN
Swift纯代码 UICollectionView 分组显示、Cell圆角、选中变色
上一篇介绍了如何使用swift纯代码构建UIColletionView,本篇继续介绍如何对其分组、设置分组标题、cell 圆角、选中变色。 效果图如下:
热心的程序员
2018/08/30
5.3K0
Swift纯代码 UICollectionView 分组显示、Cell圆角、选中变色
IOS移动开发从入门到精通 视图UIView、层CALayer(1)
1个UIWindow 或 UIView 1、设置背景色 import UIKit class ViewController:UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view,typically from a nib. let view = UIView(frame:CGRect(x:40, y:80,width:240, height:240)) view.backgroundColor = UIColor.black view.clipsToBounds=true self.view.addSubview(view) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
用户5760343
2019/07/05
8450
iOS从Xib中设置样式
iOS在写视图的有的人喜欢纯代码去写,从之前的绝对定位方式(Frame),到现在的自动布局(Autolayout),但这种方式的好处是便于复制修改和装X,但是缺点是代码不容易看,不便于修改
码客说
2019/10/22
2.6K0
仿window阿里旺旺登陆界面,打印机吐纸动画效果---转自Bison的技术博客
偶然的机会发现window的阿里旺旺的登陆效果蛮有意思的,于是就模仿着做了一下打印机吐纸的动画效果 看起来很神奇的东西,实现起来却不难,下面我给大家看下主要的源码。 - (void)createUI{ UIImageView *backimageView=[[UIImageView alloc]init]; backimageView.image =[UIImage imageNamed:@"1.png"]; backimageView.frame = CGRectMake(50
Bison
2018/07/06
4860
关于IB_DESIGNABLE / IBInspectable的那些需要注意的事
IB_DESIGNABLE / IBInspectable 这两个关键字是在WWDC 2014年"What's New in Interface Builder"这个Session里面,用Swift讲过一个例子。也是随着Xcode 6 新加入的关键字。
一缕殇流化隐半边冰霜
2018/08/30
1.7K0
关于IB_DESIGNABLE / IBInspectable的那些需要注意的事
Core Animation实战四(视觉效果)
我们知道View中封装了一些动画和显示效果那我们为什么还要操作CALayer层面上呢?
星宇大前端
2019/01/15
5770
iOS | 动态获取字符串宽高并添加约束
在 iOS 实际编码过程中,我们可能会需要通过代码动态的向某个 View 视图中添加 UILabel, 此时,我们必须手动的为这些 UILabel 对象添加约束条件,否则,这些 UILabel 将会因为没有约束条件而无法显示。
CnPeng
2021/02/03
7910
iOS动画系列之一:带时分秒指针的时钟动画(上)1. 最终实现的效果以及思维导图2. CALayer3. 隐式动画
1. 最终实现的效果以及思维导图 实现的效果。不小心暴露了写文章的时间。-_-+++ 实现效果 实现的步骤思维导图: 思维导图.png 2. CALayer 其实今天分享的主角是CALayer。因为所
stanbai
2018/06/28
2.2K0
Jekyll-Admin-Mac-模板处理
制作导航条 使用网络框架Alamofire 使用 SwiftyJSON iOS10开启启用 HTTP 请求 使用 ObjectMapper 关于 Swift 闭包里面循环引用 封装模块 设置 NSView 的圆角 解决 Xib 无法显示自定义控件从 Xib 加载的问题。 Objective-C 中的 [self class] 用 Swift 怎么表示 关于 prepareForInterfaceBuilder() 方法 解决 NSView 不能显示圆角的问题。 使用 CALayer 设置背景颜色 设置 ContentHeader 右侧试图 制作 文章 页面 数据 的模板 prepareForInterfaceBuilder() 只能设置属性在所属的类里面。 如何设置 NSButton 标题的颜色 使用 Module 名称解决名字冲突问题 NSButton 设置 attributedTitle 之前的对齐方式失效 关于 NSMutableParagraphStyle
君赏
2018/09/07
7K0
iOS常用代码段
控制器中代码设置 > storybord设置 > 全局设置 优先级高的会覆盖优先级低的配置,比如storybord中的设置了navigationbar的样式 那么全局设置就不生效
码客说
2019/10/22
8870
Quartz2D复习(四) --- 图层CALayer和动画CAAnimation
1)、在ios中,能看得见摸得着的东西基本上都是UIView, 比如按钮、文本标签、文本输入框、图标等,这些都是UIView
tandaxia
2018/09/27
1.6K0
Quartz2D复习(四) --- 图层CALayer和动画CAAnimation
奇怪的现象:touchesBegan: 与UITapGestureRecognizer手势没有人响应 以及set方法的妙用
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/164191.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/15
6430
推荐阅读
相关推荐
iOS开发技巧:快速实现 圆角+描边
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验