首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从Swift 2.2迁移到Swift 3打破了我的自定义子类UIButton的背景设置

在Swift 3中,UIButton的背景设置方式发生了变化。在Swift 2.2中,我们可以通过设置UIButton的backgroundImage属性来设置背景图片,但在Swift 3中,这个属性被废弃了。

为了在Swift 3中设置UIButton的背景,我们可以使用新的方法setBackgroundImage(_:for:)。这个方法接受两个参数,第一个参数是背景图片,第二个参数是一个UIControl.State枚举值,用于指定按钮的状态。

下面是一个示例代码,展示了如何在Swift 3中设置自定义子类UIButton的背景:

代码语言:txt
复制
class CustomButton: UIButton {
    override init(frame: CGRect) {
        super.init(frame: frame)
        setupButton()
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        setupButton()
    }
    
    private func setupButton() {
        let normalImage = UIImage(named: "normal_background")
        let highlightedImage = UIImage(named: "highlighted_background")
        
        setBackgroundImage(normalImage, for: .normal)
        setBackgroundImage(highlightedImage, for: .highlighted)
    }
}

在上面的示例代码中,我们创建了一个名为CustomButton的自定义子类UIButton。在初始化方法中,我们调用了setupButton()方法来设置按钮的背景。在setupButton()方法中,我们使用setBackgroundImage(_:for:)方法来设置按钮的背景图片,分别对应不同的按钮状态。

这样,在Swift 3中,我们就可以通过自定义子类UIButton的方式来设置按钮的背景了。

推荐的腾讯云相关产品:腾讯云移动应用分析(MTA)

腾讯云移动应用分析(Mobile App Analytics,MTA)是一款专业的移动应用数据分析产品,为开发者提供全方位的移动应用数据分析服务。MTA可以帮助开发者深入了解用户行为、应用使用情况、用户留存等关键指标,从而优化应用的功能和用户体验。

产品介绍链接地址:https://cloud.tencent.com/product/mta

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Swift:静态工厂方法

放置此类设置代码一个非常常见地方是子类。只需将您需要设置对象子类化,覆盖其初始化程序并在那里进行设置——完成!...同样,这是许多开发人员选择子类化并创建内置视图类自定义变体地方,就像这里UILabel一样,我们将使用它来渲染标题: class TitleLabel: UILabel { override...尽管子类化是一项重要语言功能,即使在面向协议编程时代,也很容易将自定义设置自定义行为混淆。我们并没有在上面的UILabel中真正添加任何新行为,我们只是在设置一个实例。...虽然我们可能无法完全摆脱视图控制器(或与此相关视图)子类化,但是某些类型视图控制器可以工厂方法中受益。...如果您想了解有关此类对象以及通常使用工厂模式其他方式更多信息,请查看"Swift:使用工厂模式以避免共享状态","Swift:使用工厂进行依赖注入"和"Swift: 使用懒加载属性"。

2.3K10

Swift-MVVM 简单演练(一)

通过增加tabBarItem方式,给中间留出一个+按钮位置 自定义一个UIButton分类HQButton+Extension,封装快速创建自定义按钮方法 HQButton.swift extension...,导航栏右侧会有一段白色样式出现 原因是:系统默认导航栏透明度太高,自定义设置一个颜色就好了 HQBaseViewController.swift // 设置`navigationBar`渲染颜色...,突然发现swift在这里是比objective-c友好很多,如果你给参数设置了一个默认值。...barTintColor是管理整个导航条背景色 tintColor是管理导航条上item文字颜色 titleTextAttributes是设置导航栏title颜色 如果你找不到设置方法,...当值改变时候,重新执行loadData方法 子类会重写基类loadData方法,因此不用在去子类重写此方法 // 设置刷新控件 refreshControl = UIRefreshControl(

10.2K51

声明式 UIKit 在有赞美业实践

然而有赞美业是有赞最早迁移到 Swift 项目,迁移 Swift代码,对 C++ 兼容其实有一定局限性,若过多使用 C++,在代码中也不能体现 Swift 优雅性。...2.2 布局设计 由于我们结构和 API 设计是基于 UIView 方式,布局在设计中,其实也是一个 View,一个具备布局能力视图容器。布局能力我们是可以进行抽象,即布局算法。...,传统方式更多是使用继承,基类配置基础样式,子类再次扩展新样式。...这样处理往往导致一条条很长继承链,过度自定义会导致代码复用性降低。...为了解决这个问题,在样式上处理上,我们导入了 Style 概念,和 CSS 一样,Style 是对样式描述,调用方可以任意组合 Style,把样式和 UI 代码中抽离,能够很好地减少自定义 view

1.4K30

Swift| 基础语法(五)

前言 总结下 swift基础语法,里面涉及到:常量&变量、Swift数据类型、逻辑分支、循环、字符串相关、数组和字典、方法书写调用等内容,考虑到阅读体验分多篇来展示,希望对大家学习swift...、UIButton、UIImageView使用 UITableView使用 UITableView使用 单例 相册选择照片或者拍照 ---- 一、纯代码创建应用根试图 func application...rootViewController = vc //设置背景颜色 self.window?....可以在自定义cell中处理点击状态下显示 var label1 :UILabel? var label2 :UILabel?...因为在Swift中,所有对象构造器默认都是public,所以需要重写你init让其成为私有的。 这样就保证像如下代码编译报错,不能通过。 六、相册选择照片或者拍照 ?

2K30

iOS 面试策略之经验之谈-面向协议编程

缺点,并且出现在从大型系统到小型应用、服务器端到前端各个方面。...Swift 和 Objective-C 是不支持多继承,因为这会造成菱形问题,即多个父类实现了同一个方法,子类无法判断继承哪个父类情况。...实现一个自定义 UIButton 类,在其中添加点击抖动效果方法(shake 方法); 写一个 UIButton 或者 UIView 拓展(extension),然后在其中增加 shake 方法;...文章到这里就结束了,感谢你观看,只是有些话想对读者们说说: iOS开发人群越来越少,说实在,每次在后台看到一些读者回应都觉得很欣慰,至少你们依然坚守iOS技术岗…为了感谢读者们,想把收藏一些编程干货贡献给大家...;如何获取,具体内容请转看-GitHub :GitHub地址

1.2K20

设计模式之创建型模式

创建型模式简介 创建型模式将实例化对象部分系统中独立出来,它们将系统具体使用哪些类信息封装起来,并隐藏了这些类是如何被创建和组合,对外只提供一个通用接口。...个人认为抽象工厂模式和生成者模式抽象层级最高,因为它们都可以分别用工厂方法和原型实现。而工厂方法和原型是同一个层级,它们在大多数时候是互斥,一般不能结合使用。...而且不止是显示文字,连同背景色、位置、大小等等属性都会不同。...于是我们考虑自定义几个 Label 和 Button: //MARK: - Hello 系列产品 class HelloButton: UIButton { init() { let...要使用原型模式需要给产品类设置一个用来克隆自身实例函数,虽然很多语言或者标准库都有 copy 函数,对克隆对象提供了一些原生支持,但你还得考虑深拷贝和浅拷贝问题,前者同时拷贝对象内部状态,后者则通过指针共享状态

64040

iOS开发常用之网络

TextProgress - 自定义实现数字进度条:1,可以自定义数字(0-100),填充比例为当前设置数字,2,可以实现自定义填充颜色,上下部分都可以,3,可以自定义边界颜色4,实现了水波动画...YPDropMenuViewDemo.swift - 一款DropMenu,menuView,类似之前美团下拉菜单,支持swift2.2,因为用到iOS8。毛玻璃。...所以想支持到iOS8.0,支持自定义,支持等宽排列,支持左向右排列。 类似美团下拉菜单 - 类似美团下拉菜单,源码推荐说明。...SwiftyFORM - swift表单输入框架(亮点是表单验证规则引擎),是见过地最易用Swift表单组件。...HYBImageCliped - 可给任意继承UIView控件添加任意多个圆角,可根据颜色生成图片且可带任意圆角,给UIButton设置不同状态下图片且可带任意圆角,给UIImageView设置任意图片

23.5K10

【从零开始用Swift开发一个iOS应用(仿微博)】开篇-1. demo上手体验

二、代码实现 2.1 程序入口说明 Application/AppDelegate.swift文件中@UIApplication注解,表示这个Class类是程序入口 ?...2.2 代码结构说明 所有方法放到一个{}中,并有缩进。 和Java编码格式非常相似。...创建一个视图 let v = UIView(frame: CGRect(x:0, y:0, width: 100, height: 100)) // 2.设置背景颜色...2.3.2 添加一个按钮,并添加按钮点击事件监听方法 // 2.创建一个按钮 let btn = UIButton(type: .contactAdd) // 2.1 添加到当前视图 v.addSubview...如下图所示,在注释中添加了MARK、TODO、FIXME标签前缀,这些特殊标记锚点菜单将会显示在导航栏上,点击菜单即可跳转到对应注释地方,非常方便。 ?

3.7K31

Swift 基本语法01-Swift简介

Button 创建 // 创建按钮 let btn = UIButton(type: .contactAdd) view.addSubview(btn) btn.center = view.center...btn.addTarget(self, action: #selector(clickMe), for: .touchUpInside) // 按钮点击事件 func clickMe(btn:UIButton...View 设置背景色 let v = UIView(frame: CGRect(x: 0, y: 20, width: 100, height: 100)) // 代码设置颜色 v.backgroundColor...可选项(Optional) Optional是 Swift一大特色,也是Swift初学者最容易困惑问题 定义变量时,如果指定是可选,表示该变量可以有一个指定类型值,也可以是 nil 定义变量时...,表示该变量是可选 变量可选项默认值是nil 常量可选项没有默认值,主要用于在构造函数中给常量设置初始数值 !代表强行解包 - 可选值中强行获取对应非空值,如果真的是nil,就会崩溃!

2K70

30DaysOfSwift - Day1 计时器

前几天逛Github,偶然看到一个Swift项目 —— 30DaysOfSwift,作者一共用30个小项目,来熟悉Swift语言,而我正好也学习了一段时间Swift语言,准备仿照这样模式,来更加深入了解...而我一直都是喜欢用纯代码布局,UI搭建也是使用代码完成。所以我在写这个小Demo之前在项目里集成了SnapKit,使用类似Objective-C中常用masonry框架来完成自动布局。...这里还发现一个Swift小问题,使用cocoadPods集成第三方库,引用不到头文件解决方法和Objective-C不一样。...这是第一个Swift小Demo,很简单,也很好帮助熟悉UI. import UIKit import SnapKit let SCREEN_WIDTH = UIScreen.mainScreen()...= 103 return button }() //MARK: - 创建UI界面 func setupUI() { //顶部背景试图

78640

自学Swift之路(二)UITableView自定义和实际利用

自定义,附带场景使用(简单demo) 创建工程什么就不说了,先看一下界面然后咱们直接开始代码: ?...DA345C16-932E-4524-8D93-5FDBAD540F3C.png 另外,在上面的界面截图中,我们发现用到了navigationController,这个demo中自定义了它(从上面截图也能看出来...} } 创建单元格时候直接使用我们自定义BuildListTableViewCell创建就行了 好了,这篇文章也完了,这只是一个非常简单demo,大家平时工作要做肯定不止这么点,哈哈哈...学了这么几天,发现Swift还是比较容易入手,下篇文章我会用一个小项目,本人是做室内地图SDK,这次小项目是仿OC写SDK Demo,使用Swift和OC混编,集成百度地图SDK和自己室内...在下篇文章中会讲讲,Swift项目已上github:https://github.com/qingmomo/Swift-die OC版demo在我们官网:http://www.innsmap.com

2.3K90

点亮你 App 5 个 iOS 库

TVButton TVButton 可在 UIButton 控件上重新创建类似于在 Apple TV 上看到美丽视差效果。长按或拖动即可触发效果。...TKRubberIndicator TKRubberIndicator是Swift制作库,它可在应用程序中添加橡胶动画页面控件。要使用它,您需要首先导入TKRubberPageControl框架。...TransitionButton TransitionButton是一个用于添加带有加载和过渡动画 UIButton 库。首先,TransitionButton 是 UIButton 子类。...Sliders Sliders是完全使用 SwiftUI 构建库。它使您可以在 iOS,macOS 和 Mac Catalyst 上创建可自定义水平和垂直滑块。...在个性化设置中,可以设置:简单渐变值滑块样式;多值跟踪;复杂范围滑块样式;复杂点滑块样式 • https://github.com/SwiftUIExtensions/Sliders ?

60720

iOS_泛型 Generics __covariant(协变) __contravariant(逆变)

4.2、系统类举例 1、泛型 Generics 泛型可以让你使用自定义类型来编写灵活、可重用函数和类型,可以避免重复,以清晰、抽象方式表达其意图。...在2015年WWDC上苹果推出了Swift 2.0版本,为了让开发者能从Objective-C更好过度到Swift上,苹果也为Objective-C带来了Generics泛型支持。...UIView *> *subviews; // 这样写代码就没有警告了: UIButton *button = view.subviews.lastObject; 3、自定义泛型 声明一个Generics...通常情况下父类型出现地方都可以用子类替换。...Objective-C 自定义泛型 博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?

92210

升级和游戏音效 如何在场景和声音效果之间切换

类可以另一个类继承方法,属性和其他特性。我们将GameScene设置为父级并创建多个swift文件。新swift文件将是孩子们,他们将继承GameScene方法。...由于我们将gamescene名称更改为Level1,因此我们需要将第一个文件名称更改为Level1。 超类和子类 在Level1.swift中,导入SpriteKit并将类声明为Level 1。...单击** Command + N **创建一个新swift文件,命名为:Level 2.然后,为2级场景创建另一个sks文件。像第一个一样设置新场景。 不要忘记将场景摄像机更改为摄像机节点。...在声音下方,创建一个扩展动作并声明一个变量来永远播放背景音乐。 背景音乐 要播放背景音乐,请转到GameScene.swift文件,然后在didMove函数中声明音乐变量并运行它。...把它们放在正确地方。 结论 在本节中,我们学习了子类如何超类继承,如何场景更改为另一个场景,创建新场景以及在游戏中添加声音效果。

1.7K30

Swift 3.0介绍

概述 接触swift2.0开始,当时出于对ios好奇,加上官方大力推荐,于是扎入了ios怀抱,1.2发展到了今天3.0.1,这期间由于Swift目前还在发展阶段并不能向下兼容,这也造成部分我们...2.x开发版本在新版本上运行问题,不过基于最近基本版本改动比较小原因吧,觉得swift是为了ios趋势。...本文介绍主要以3.0为基础讲解,Swift编译器和标准库两个方面来说明Swift3.0变化。...状态去掉 let btn1 = UIButton() btn1.setTitle("hello", for: UIControlState()) // 相当于Normal状态 去C风格 Swift发展初期很多类库引入依然保持...在使用这个工具时候大家会看到如下界面: ? 为什么上图会出现2.3,其实就是Swift 2.2 + New SDKs。

1.3K80

Swift 3.0介绍

概述 接触swift2.0开始,当时出于对ios好奇,加上官方大力推荐,于是扎入了ios怀抱,1.2发展到了今天3.0.1,这期间由于Swift目前还在发展阶段并不能向下兼容,这也造成部分我们...2.x开发版本在新版本上运行问题,不过基于最近基本版本改动比较小原因吧,觉得swift是为了ios趋势。...本文介绍主要以3.0为基础讲解,Swift编译器和标准库两个方面来说明Swift3.0变化。...状态去掉 let btn1 = UIButton() btn1.setTitle("hello", for: UIControlState()) // 相当于Normal状态 去C风格 Swift发展初期很多类库引入依然保持...在使用这个工具时候大家会看到如下界面: ? 为什么上图会出现2.3,其实就是Swift 2.2 + New SDKs。

1.2K90

Swift 面向对象解析(二)

ZXMessageCell: UITableViewCell { // 自定义cell继承与UITableviewCell }      继承了父类,你也就能使用父类属性方法...二:类构造与析构 由于类继承,子类不仅包括了自己定义存储属性,还包括从父类继承得到存储属性,类所有存储属性,包括所有的继承父类属性,在构造过程中必须设置初始值,因此类构造过程相对比较复杂...上面是多态概念,它使用和例子以前总结写过,把以前博客链接给大家。...Swift 2.2 多态和强制转换 四:嵌套  这个就一句话带过了,在Swift中允许在一个类型内部去嵌套定义另一个类型。...协议基本用法以前博客当中也有说过 Swift 2.2 协议和代理          顺便指出,可选协议这一点,其实也挺简单,你在这些属性、方法、下标等想让它是可选,让它加上 optional

94570
领券