![](https://img-blog.csdnimg.cn/20200318112015755.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
UI控件
文章平均质量分 77
控件实现
Code&Ocean
遨游在编码海洋中。
iOS Developer
展开
-
UIButton状态探索和自定义
作为 **iOS** 开发者,一提到控件,就不得不提到 `UIButton`,它做为 **iOS** 系统最常用的响应用户点击操作的控件,为我们提供了相当丰富的功能以及可定制性。而我们的日常工作的 80% ~ 90% 做是在与 **UI**打交道,处理控件在用户的不同操作下的不同状态,最简单的,比如用户没有登录时,按钮置灰不可点击,用户点击时出现一个反色效果反馈到用户等等。对常用状态的定义,系统在很早的时候就给出了如果遇到满足的状态怎自定义添加了。转载 2022-02-09 16:38:29 · 1089 阅读 · 0 评论 -
【代码段】UITableView Section圆角
UITableView Section圆角extension UITableView { /// section圆角 需要在 `WillDisplayCell`中调用 /// - Parameters: /// - cell: cell 对象 /// - indexPath: index /// - cornerRadius: 圆角值 /// - inset: inset 偏移,比如 cell 含有 containerView ///原创 2021-08-30 16:29:56 · 313 阅读 · 0 评论 -
UIScrollView 使用
UIScrollView 基本使用苹果的官方文档:Scroll View Programming GuideUIScrollView 是 iOS 非常重要的具备滚动能力的视图,能滚动的控件基本继承自 UIScrollView,比如UITableView, UICollectionView, UITextView等。主题响应滚动交互var delegate: UIScrollViewDelegate?内容大小和偏移量var contentSize: CGSize视图可以滚动的大小,决定了可以滚原创 2021-08-20 16:33:48 · 669 阅读 · 1 评论 -
iOS自定义View 控件自动计算size能力
iOS自定义View 控件自动计算size能力背景在使用 UILabel 和 UIImage 的时候,不用指定宽高约束,控件也不会报约束缺失,还可以根据内容自己确定适合的宽高,特别适合 Xib 和 Storyboard 布局。我们在自定义控件的时候,怎么才能让控件具备这种自动计算宽高的功能了?基本知识点只需要自定义控件满足以下条件之一即可:自定义控件实现intrinsicContentSize的重写并返回合适大小,适合子控件存在 frame初始化,或者动态添加。自定义控件内部约束满足这时原创 2021-03-30 17:02:24 · 3480 阅读 · 0 评论 -
iOS 快速定位约束冲突
iOS 快速定位约束冲突什么是约束冲突当你使用 AutoLayout 布局,你添加的约束不满足或者会造成系统布局冲突的时候,控制台就会打印冲突日志。约束冲突示例[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)原创 2021-01-14 11:18:29 · 2116 阅读 · 0 评论 -
iOS 自定义 View
开发中,为了最小模块化和控件复用(其实更多的是系统控件不满足需求时),我们常常需要自定义 View。这就涉及到需要了解 UIView 的生命周期,布局约束周期才能更好的自定义。示例工程基本声命周期一个控件显示在屏幕需要这么一个过程初始化 -> 约束和布局 -> 绘制渲染 -> 销毁对应方法调用(可在示例工程中查看日志输出)init(coder:)/init(frame:) // 【初始化】可视化加载/代码初始化updateConstraints() // 【约束更原创 2020-08-12 15:56:43 · 2550 阅读 · 0 评论 -
UIView 的布局与绘制显示相关方法调用时机
UIView控件布局的过程UIView是我们经常使用的一个基本控件,其中有几个基本的布局方法需要理清。setNeedLayout、 layoutSubViews 、layoutIfNeed几个方法的调用顺序和条件。drawRect的调用以及sizeToFit与sizeThatFit的关系。setNeedLayout、 layoutSubViews 、layoutIfNeed首先原创 2017-03-24 21:58:06 · 4735 阅读 · 1 评论 -
UITableView 调整 Header 层级关系
UITableView 的 Header如何嵌在第一个 Cell 下面为什么要调整层级关系还用问嘛,当然是产品经理拿着四十米大刀告诉你我就要这个效果。橙色 View 为轮播滚动效果。一眼看过去,简单,就是 tableView + 一个 headerView思路让 headerView 的子视图比 Header高一点,就可以超出 headerView 占位高度,达到在第一个 Cell 的底部,完成 UI 小姐姐的交叉效果。一顿猛操作 private func setupTableView原创 2020-08-07 11:24:14 · 1136 阅读 · 2 评论 -
UITableViewHeader 动态调整高度
首先,标题党一枚,UITableViewHeader 是没有办法动态调整But,我们可以通过重新赋值 Header 来达到动态调整的效果示例需求:header包含一个动态文本标签,具体内容多少可能会随业务多久修改,这里就涉及一个问题,需要多行显示,Header要随之动态变化高度。需求界面单行显示多行显示1.自定义HeaderView使用Autolayout布局自定义HeaderView,一定要保证控件之间满足布局约束。关键代码: let label = UILabel() lab原创 2020-08-07 10:42:06 · 1643 阅读 · 0 评论 -
利用 CoreGraphics 绘制折线图
效果与元素分析实现效果图如下:首先对折线图进行元素分割包含以下六部分元素渐变背景折线折线上的点折线范围内渐变参考线文本显示的 Label除了6之外,其他几个元素都在 draw(_:)方法中利用 CoreGraphic 进行绘制。绘制背景渐变色主要绘制手段是 利用 UIBezierPath 和 CoreGraphicContext, UIBezerPath 能方便的绘制一些简单的几何图形, 但是 更复杂的绘制还是借助 CGContext 来完成,比如渐变色。利用 UIBezi翻译 2020-08-06 18:00:51 · 859 阅读 · 0 评论 -
iOS 绘画 点与像素
iOS 像素与点像素与点的关系导入标的时候,我们都知道有1倍、2倍、3倍图。对应在1倍、2倍、3倍屏幕上使用。那这些不同倍图(不同分辨率屏幕)与日常点的关系是什么了。1倍屏: 1个点(point)对应1个像素(piexl),比如第一批 iPhone2倍屏: 1个点(point)对应4个像素(piexl),横竖各3列,比如 iPhone63倍屏: 1个点(point)对应9个像素(piexl),横竖各3列,比如iPhone6Plus像素示例图如下红色矩形表示一个点, 不同倍屏对应不同像素点。原创 2020-08-04 17:40:14 · 880 阅读 · 0 评论 -
iOS自动布局(AutoLayout)之 NSLayoutAnchor
自动布局(AutoLayout)之 NSLayoutAnchor 方式使用AutoLayout自动布局(AutoLayout)是iOS6引入的关系布局,实现动态位置和多视图关系的布局方式,是对frame布局和AutoresizingMask的不足进行补充的一种方式,现在已经成为主流的布局方案,由于原始创建方式比较复杂,可以使用优秀的第三方框架方便创建约束(Swift: SnapKit, Obj...原创 2020-04-17 18:24:40 · 3443 阅读 · 0 评论 -
iOS布局-autoresizingMask
iOS布局-AutoresizingMask前端的主要任务简单来看,就是绘制界面,绑定数据。在iOS绘制界面的布局方式主要有以下三种:frameautoresizingMaskAutoLayoutfame:常用于绝对布局,通过设置x, y, width, height来确定控件的位置和大小。autoresingMask:苹果早期的相对布局的方案,允许子视图跟随父视图变化而变化,比如...原创 2020-04-17 14:56:58 · 5149 阅读 · 0 评论 -
【UIKit】表格自定义单元格(UITableViewCll)
自定义表格单元格(Cell)操作一、自定义表格单元格(Cell)1、创建UITableViewCell的子类2、在IB中规划设计(添加控件)表格的单元格3、将单元格类设置为步骤1产生的子类4、将IB中单元格里的元素与类连接起来(设置类的属性)提示原创 2016-03-27 16:40:10 · 2752 阅读 · 0 评论 -
UIGestureRecognizer手势介绍
UIGestureRecognizer手势 : 1-概要介绍一、UIGestureRecognizer类简介UIGestureRecognizer类是一个抽象类,不能直接使用,具体使用过程中需要使用其子类。UIGestureRecognizer一共包括6个子类,分别对应6种手势,即: UITapGestureRecognizer:点击 UIP原创 2016-03-20 11:22:33 · 701 阅读 · 0 评论 -
【UIKit】UIView基础学习
UIView基础官网文档:1.View programming Guide for iOS2.UIView Class Reference[常用属性和方法]3.UIKit User Interface Catalog一、UIView简介UIView 算得上是iOS中就基础的控件,大部分控件都是基于其而来,它具有展示、响应、动画等基础特点,也是自定义的基础控件的最佳选...原创 2016-03-20 10:45:37 · 517 阅读 · 0 评论 -
【UIKit】UILabel使用
iOS开发基础控件一、标签(UILabel)以下属性都可以在UILabel类中找到1、文本属性:text//文本显示attributedText//???Font//字体TextColor//文本颜色TextAlignment//对其方式LineBreakMode//换行模型(具体类型见:http://blog.csdn.net/r原创 2016-03-17 20:51:44 · 942 阅读 · 0 评论 -
如何在Storyboard中使用Scroll view
本文章环境Xcode 11在开始使用scroll view之前(storyboard/XIB),我们必须搞清楚两个东西在Storybord/Xib中使用Scroll view,会有哪些结构为什么会发出“ambiguous scrollabel content width/height”错误提示。scroll view的结构滚动视图工作原理在于可滚动区间大小,就像这样:为了让滚动...翻译 2020-01-13 14:12:12 · 5086 阅读 · 2 评论 -
Swift常用库收集
收集一些项目中常用的比较顺手的第三方库, 并不一定是基础的库,只是有时候会用到,免得到时候到处找。UI层 QMUI 腾讯样式统一 UI控件库,统一多端控件,系统控件基础上提高扩展行(比如AlertViewController的自定义), 主题与暗黑模式的配置切换 https://qmuiteam.com/ios CALayer系列实例 CALayer及其子类的示...原创 2019-11-11 15:56:36 · 596 阅读 · 0 评论 -
Swift中@IBDesignable/@IBInspectable的使用
IB可视化属性调节视图-@IBDesignable/@IBInspectable的使用在工程中新建一个swift类(继承UIView),将它与某个view关联起来。在文件中添加下面的代码//可以用于画圆import UIKit/// 学习在IB中直接设置属性,并且实时改变(学习来源于segmentFault的在OC和swift中使用IBDsignable/IBInsepecta原创 2016-08-30 14:40:59 · 4311 阅读 · 1 评论 -
UIView及其分类的属性方法定义
UIView是iOS开发中最熟悉的控件,不是因为它用得多,而是很多UI控件都是继承它的,了解它的分类方法是很有必要的。UIView其实是由多个分类构成,主要有如下几个分类:UIView :基本属性,tag、layer、可否交互等设置以下是分类UIView ()UIViewGeometry : 几何特征 位置 【frame 、bound 、center 、等】UIView原创 2017-03-28 17:04:45 · 2591 阅读 · 0 评论 -
UIView的几个枚举定义
UIView是iOS开发最基本的视图,很多控件都是继承它,掌握其中的几个基本枚举定义,有利益理解视图的加载和参数区别。一、UIViewAnimationCurve UIView的基本动画变化规律typedef NS_ENUM(NSInteger, UIViewAnimationCurve) { UIViewAnimationCurveEaseInOut, ...原创 2017-03-26 23:06:05 · 1510 阅读 · 0 评论 -
UISearchBar类介绍与使用和UISearchController的使用
系统自带的搜索栏是继承于UIView的,封装TextField等UIView,但是这些控件并不能对外可见。一、属性和构造器 public init(frame: CGRect) public init?(coder aDecoder: NSCoder) 基本属性 open var barStyle: UIBarStyle // default is UI...原创 2017-06-29 17:06:40 · 1876 阅读 · 0 评论 -
【UIKit】文本框(UITextField)及键盘遮挡处理和回收
一、文本框属性官网文档:UITextField Class Reference以下都是可以在IB中选择设置的,也可以使用代码编写placeholder :文本提示、提示符【placeholder:占位符】aligment:对其方式clear Button:清除按钮键盘选项default//默认键盘(没有特殊要求就选它)keyboardeType:弹出键盘类原创 2016-04-01 21:00:06 · 845 阅读 · 0 评论 -
iOS自动布局-VFL格式约束
AutoLayout VFL可视化格式约束一、VFL简介iOS的自动布局约束主要有三种方式,1.可视化界面中添加布局,比如在Storyboard xib。2.代码添加当个约束3.VFL格式约束VFL添加约束的优点1.可以一行代码添加多个约束和多个对象2.动态性大3.不依赖其他框架。4.只需要直观的从垂直和水平方向考虑现在在代码添加约束中有很多优秀...原创 2018-08-10 18:18:02 · 1363 阅读 · 0 评论 -
AddChildViewCtroller
AddChildViewCtroller切换 View。原创 2016-10-07 00:21:59 · 1070 阅读 · 1 评论 -
UIView自定义控件-Swfit
UIView自定义资料参考UIView中与AutoLayout相关的几个方法对比: 详细介绍了UIView约束布局相关调用顺序,好好理解有助于子空间布局和约束更新。UIView在AutoLayout下的布局过程iOS UIkit 提供简单的基本控件,但是有时候为了需求往往需要将多个控件整合到一个View控件中,此时就是自定义View两种方式:1.大神:纯代码(代码创建控件、...原创 2017-06-24 22:26:59 · 9351 阅读 · 3 评论 -
iOS 解决导航栏pop返回时出现黑块问题!
iOS 解决导航栏pop返回时出现黑块问题!问题描述:导航栏正常从A页面push到B页面,从B页面pop返回A页面时遇到过渡过程中导航栏出现黑块的问题。如截图所示:问题原因:A界面导航栏被影藏,B页面的导航栏存在。过渡的时候没有动画。解决方案:1.在A页面中添加影藏导航过渡动画[最佳方案]override func viewWillAppear(_原创 2017-10-27 09:42:43 · 4897 阅读 · 0 评论 -
【UIKit】表格 UITableView
UITableView的使用介绍相关官方文档参考:Table View Programming Guide for iOSUITableView基本使用基本步骤1、 准备数据源的数组2、 遵循的协议UITableViewDataSource 、UITableViewDelegate、UITableViewDataSourcePrefetch(数据预加载)3、 使用表格...原创 2016-03-27 15:54:11 · 847 阅读 · 5 评论 -
StoryBoard布局注意事项
StoryBoard布局注意事项 对于一个懒人来说,相对于代码写界面,我更喜欢使用可是化布局,可以实时看到,可是终究还是代码执行,所以很多东西还需要在代码中去做,所以我还是鼓励打家多用代码编写界面。1.生命周期注意事项不要在Controller的viewWillLoad中去使用来自于可视化布局布局和尺寸(特别是frame或bound)原因:在这几个方法中,可视化布局的约束并没有生效...原创 2017-08-03 12:38:16 · 956 阅读 · 0 评论 -
iOS导航栏遮挡
在iOS开发中UINavigationViewController是一个非常重要的控件,可是有时候使用时会导致导航栏遮挡视图的问题,(比如先做好约束,后添加导航栏的时候就有可能)。当我在视图中添加一个tableview和一个collectionView的时候,遮挡问题如下图:解决办法:1.在使用storyboard做布局的时候,一开始就设置top bar为有导航栏的(如下图原创 2017-06-28 00:16:34 · 3450 阅读 · 1 评论