iOS 中有的时候我们控件要做成圆形 或者是切成圆角,这个时候我们一般都会使用.layer.cornerRadius -> clipsToBounds = YES 的属性来切,这样完全能达到我们的效果,但是如果一个界面上需要切圆角的控件很多,并且列表很长的时候,尤其是像 tableView 那样如果每一个 cell 上都有大量的控件需要切,那么就会非常卡顿,帧数严重下降 。其实原因就是这样设置会触发离屏渲染,比较消耗性能。注意:png 图片 UIImageView 处理圆角是不会产生离屏渲染的。(ios9.0 之后不会离屏渲染,ios9.0 之前还是会离屏渲染)。这里先说下离屏渲染: ###### iOS 的渲染机制: CPU 计算好显示内容提交到 GPU,GPU 渲染完成后将渲染结果放入帧缓冲区,随后视频控制器会逐行读取帧缓冲区的数据,经过可能的数模转换传递给显示器显示。GPU 屏幕渲染有以下两种方式: On-Screen Rendering 意为当前屏幕渲染,指的是 GPU 的渲染操作是在当前用于显示的屏幕缓冲区中进行。 Off-Screen Rendering 意为离屏渲染,指的是 GPU 在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作。 由以上可以看出离屏渲染需要重新开辟新的缓存空间,必定要更加消耗资源。 通过查资料目前知道了设置了以下属性时,都会触发离屏绘制: shouldRasterize(光栅化) masks(遮罩) shadows(阴影) edge antialiasing(抗锯齿) group opacity(不透明) 复杂形状设置圆角等 渐变 我用一个现有的小 DEMO 来测试下,因为这个 demo 中没有切圆角,但是有阴影,一样可以出发离屏渲染,所以效果是一样的,在 tableView 中的自定义 cell 类中我设置了阴影如图:
Flutter提供的控件非常多,都可以在Flutter Widget 索引中进行查看。
因为自动布局的原理是:通过创建一个与view绑定的对象engine,使用engine记录下来相关的约束信息,在布局计算的时候,带入相关参数计算出来frame.
iOS说:“清晰度,咱俩分手吧”。以往的iOS锁屏界面非常简单直接,但是来到今年的iOS10,情况发生非常大的变化,在开始认真严肃地为大家分析(tucao)之前我想先说明一些东西: 分析并写下这篇文章绝对不是为了黑苹果的设计大神们,因为我也不知道苹果的设计团队在做出这些决定的时候面对的是什么样的制约或有什么更加长远的目标。此文针对设计做分析,不是针对某人或某团队。 iOS10的锁屏界面的交互方式时常让我感到困惑,我想探究原因。 我们都知道,当一个产品或是某个界面所要承担的任务变得越来越复杂,需求越来越多的
以iOS 10的锁屏界面为例,让你知道如何有理有据地分析一个界面交互的好坏。iOS说:“清晰度,咱俩分手吧”。以往的iOS锁屏界面非常简单直接,但是来到今年的iOS10,情况发生非常大的变化,在开始认真严肃地为大家分析(tucao)之前我想先说明一些东西: 分析并写下这篇文章绝对不是为了黑苹果的设计大神们,因为我也不知道苹果的设计团队在做出这些决定的时候面对的是什么样的制约或有什么更加长远的目标。此文针对设计做分析,不是针对某人或某团队。 iOS10的锁屏界面的交互方式时常让我感到困惑,我想探究原因。 我们
我们经常使用的一个控件是Tab,这个控件可以帮助我们将App分为几个模块,但是在一个界面内我们想要再进行细分怎么办呢?这时候就需要用到UISegmentedControl控件了,这个控件的用处就是进行分段控制,实现的样式如下:
WPF控件是Windows Presentation Foundation(WPF)中的基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。WPF控件可以分为两类:原生控件和自定义控件。
1. CALayer的基本操作. 1. CALayer简介: CALayer我们又称为层,在每个UIView内部都有一个layer的属性,UIView之所以能够显示,就是因为它里面有layer层,才具有显示的功能,我们通过操作CALayer对象,可以很方便地调整UIView的一些外观属性,例如可以给UIView设置阴影,圆角,边框等等... 2. 操作layer改变UIView外观. 2.1 设置阴影 //默认图层是有阴影的, 只不过是透明的。1为不透明,0为透明 _RedView.layer.sha
(友情提示:RN学习,从最基础的开始,大家不要嫌弃太基础,会的同学请自行略过,希望不要耽误已经会的同学的宝贵时间) 从今天开始我们进入基础组件也就是一些简单控件的学习,之前写的文章貌似太正式了,我正在考虑怎么样才能写的有意思,想想挺难的,算了,写一步算一步吧。今天我们就从最简答的View和Text控件讲起。 View View其实就是UI最基础的组件,跟我们android中的View不同,它更像我们android中的LinearLayout,RN中的View是一个支持Flexbox布局、样式、一些触摸处理和
概念 CA -> Core Animation (核心动画) 相对更底层. CALayer负责视图中显示内容和动画.所有动画都是作用在CALayer上的. UIView负责监听和相应事件.UIView是更高层的封装 在 iOS 中,你能看得见,摸得着的东西基本上都是UIView.比如一个按钮,一个文本标签,一个文本输入框, 一个图标等.这些都是UIView,其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层,在创建UIView对象时, UIView内部会自动创建一个图层 (即CALayer对象
自Iphone和Android这两个牛逼的手机操作系统发布以来,在互联网界从此就多了一个新的名词-WebApp(意为基于WEB形式的应用程序,运行在高端的移动终端设备)。
(现在大部分移动浏览器包括wp都支持viewport的width选项),这些meta标签在开发webapp时起到非常重要的作用,可以给用户提供更好的体验
QMUI 致力于提高各个平台的 UI 开发效率,目前 Web、iOS、Android 三个平台对应的框架均已在 Github 开源。 本文将着重介绍 QMUI Android。 QMUI Android 是一个 Android 平台的 UI 开发库,它提供了丰富控件及兼容处理,让开发者能专注于业务需求而无需耗费精力在基础代码建设上。 QMUI Android 项目源自于项目团队对多个项目的迭代思考,既能方便地统一项目整体的 UI 样式,也能方便地应对频繁的变动,既提供了如圆角按钮、对话框、下拉刷新等丰富的
简述 最近跟小伙伴一起讨论了一下,决定一起仿一个BiliBili的app(包括android端和iOS端),我们并没有打算把这个项目完全做完,毕竟我们的重点是掌握一些新框架的使用,并在实战过程中发现并弥补自身的不足。 本系列将记录我(android端)在开发过程中的一些我觉得有必要记录的功能实现而已,并不是完整的从0到1的完整教程,若个别看官大爷觉得不好请出门左拐谢谢。 以下是该项目将会完成的功能。 视频播放功能 直播功能 弹幕功能 换肤功能 ... 本系列文章,将会有记录以上功能的实现但不仅仅只有这些,还
CALayer我们又称它叫做层。在每个UIView内部都有一个layer这样一个属性,UIView之所以能够显示,就是因为它里面有这个layer才具有显示的功能。我们可以通过操作CALayer对象,可以很方便地调整UIView的一些外观属性,可以给UIView设置阴影,圆角,边框等等...
上周介绍了一下iOS 页面渲染-UIView & CALayer,本周我们来聊一聊 iOS 页面渲染中的高频面试题--离屏渲染。
老实说,UITableView性能优化 这个话题,最经常遇到的还是在面试中,常见的回答例如:
今天在工作中,搭建一个登录界面,因为涉及到用户名和密码的输入,所以在iOS中我们免不了要用到UITextField这个常见的输入控件。
对象的创建会分配内存、调整属性、甚至还有读取文件等操作,比较消耗 CPU 资源。尽量用轻量的对象代替重量的对象,可以对性能有所优化。比如 CALayer 比 UIView 要轻量许多,那么不需要响应触摸事件的控件,用 CALayer 显示会更加合适。如果对象不涉及 UI 操作,则尽量放到后台线程去创建,但可惜的是包含有 CALayer 的控件,都只能在主线程创建和操作。通过 Storyboard 创建视图对象时,其资源消耗会比直接通过代码创建对象要大非常多,在性能敏感的界面里,Storyboard 并不是一个好的技术选择。
对于现代计算机系统,简单来说可以大概视作三层架构:硬件、操作系统与进程。对于移动端来说,进程就是 app,而 CPU 与 GPU 是硬件层面的重要组成部分。CPU 与 GPU 提供了计算能力,通过操作系统被 app 调用。
在实际开发中,我们经常会遇到一些复杂的UI需求,往往无法通过使用Flutter的基本Widget,设置其属性参数来满足。这个时候,我们就需要针对特定的场景自定义Widget了。
表相关与的TabBar SWTableViewCell - 国内开源作者,带很多手势的表单元格。 MCSwipeTableViewCell - 带很多手势的表单元格。 TMQuiltView - 瀑布流。 XRWaterfallLayout - 超简单的瀑布流实现,实现说明。 WaterfallFlowDemo - 一个简单的UICollectionView瀑布流布局演示demo。 XLForm - 很多表格类的表,写法更高冷一点,推荐使用。 Eureka.swift - Eur
老孟导读:一个月前分享的《超过百万的StackOverflow Flutter 问题-第一期》受到很多朋友的喜欢,非常感谢大家的支持,在文章末尾有第一期的链接,希望此文能对你有所帮助。
最近跟小伙伴一起讨论了一下,决定一起仿一个BiliBili的app(包括android端和iOS端),我们并没有打算把这个项目完全做完,毕竟我们的重点是掌握一些新框架的使用,并在实战过程中发现并弥补自身的不足。
首先从过去的 CRT 显示器原理说起。CRT 的电子枪按照上面方式,从上到下一行行扫描,扫描完成后显示器就呈现一帧画面,随后电子枪回到初始位置继续下一次扫描。为了把显示器的显示过程和系统的视频控制器进行同步,显示器(或者其他硬件)会用硬件时钟产生一系列的定时信号。当电子枪换到新的一行,准备进行扫描时,显示器会发出一个水平同步信号(horizonal synchronization),简称 HSync;而当一帧画面绘制完成后,电子枪回复到原位,准备画下一帧前,显示器会发出一个垂直同步信号(vertical synchronization),简称 VSync。显示器通常以固定频率进行刷新,这个刷新率就是 VSync 信号产生的频率。尽管现在的设备大都是液晶显示屏了,但原理仍然没有变。
面试题持续整理更新中,如果你正在面试或者想一起进阶,不妨添加一下交流群1012951431一起交流。
iOS在写视图的有的人喜欢纯代码去写,从之前的绝对定位方式(Frame),到现在的自动布局(Autolayout),但这种方式的好处是便于复制修改和装X,但是缺点是代码不容易看,不便于修改
本文以问答形式主要讲述Quartz2D的相关内容,参考内容是网上下载的学习视频资料。
文章索引 4.3 控件 4.3.1 活动指示器 4.3.2 添加联系人按钮 4.3.3 日期时间选择器 4.3.4 详情展开按钮 4.3.5 信息按钮 4.3.6 标签 4.3.7 网络活动指示器 4.3.8 页面控件 4.3.9 选择器 4.3.10 进度视图 4.3.11 刷新控件 4.3.12圆角矩形按钮 4.3.13 分段控件 4.3.14 滑块 4.3.15 步进器 4.3.16 开关按钮 4.3.17 系统按钮 4.3.18文本框 4.4.1 警告框 4.4.2 操作列表 4.4.3模态视图
在iOS中UITextField这个控件作为文本输入控件一定是使用率最高的几个控件之一,而iOS提供的默认的原始TextField的造型肯定在开发时很难满足我们的要求,原因很简单,不够美观,实在太单调。所以今天我们从一些简单的复写UITextField方法开始,来讲一讲如何定制一个属于自己的UITextField。
UIButton 的全面解析 建议收藏,用到的时候来这里一查就都明白了 //初始化Button 不用alloca init 的方法 用便利构造器初始化 UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem]; typedef NS_ENUM(NSInteger, UIButtonType) { UIButtonTypeCustom = 0, -自定义风格 UIButtonTypeSystem NS_ENUM
在之前的文章中,我们一起学习了构建视图的基本元素,文本Text、图片Image和按钮,用于展示一组连续视图元素的ListView,以及处理多重嵌套的可滚动视图的CustomScrollView,等等。
创建一个 HelloWorld 项目, 在这个 IOS 项目中有四个目录 : 如下图;
一直以来,无论是Web还是iOS、Android的应用中,为了提升应用的加载等待这段时间的用户感知体验,各种技术层出不穷。其中,尤以菊花图以及由它衍生各种加载动画最为突出。
本文实例为大家分享了flutter Container容器实现圆角边框的具体代码,供大家参考,具体内容如下
小伙伴们肯定都有在玩儿一些游戏,比如和平精英,在界面上展示的名字,其实就是Android中咱们上一篇介绍到的TextView控件。而今天,我们再给大家带来一个非常好玩儿的控件,这个控件可以结合咱们之前的讲到的内容做很多有趣的事情~
在iphone开发中,最基本的布局方式是通过frame,将控件的位置和大小固定在屏幕上,后来,由于手机屏幕的尺寸有了略微变化,有了autoresizing的布局框架,我们可以设置子视图随父视图的改变做一些相应的变化,再后来,iphone的尺寸与分辨率也越来越多,适配各个屏幕也成为了iOS开发者遇到的新的问题,幸运的是,autolayout机制的出现,大大减小了开发者在适配方面的成本。以上提到的两种布局方式,在以前博客中有讨论:
房间应每日开窗通风,上下午各1次,每次通风时间30分钟以上,可选择阳光充足的时间段进行,保持空气清新。
我们来一步一步实现上面的界面,左右滑动切换显示功能页,这个可以通过PageView来实现,底部的指示符半透明覆盖在PageView上,开发过Android同学知道可以用Framelayout布局来实现,Flutter上也有类似的控件Stack,我们先完成骨架代码
自上次参加完回音分享会后,我下定决心要洗心革面乖乖打基础,于是开启了这个part,争取两个月不间断更新,写完Material Design与iOS中的组件(顺便学学英语),以便今后在使用的时候完全不虚
在flutter 开发中用InkWell或者GestureDetector将某个组件包起来,已添加点击事件。
对于习惯使用Storyboard的人来说,设置圆角、描边是一件比较蛋疼的事,因为苹果没有在xcode的Interface Builder上直接提供修改控件的圆角,边框设置。
本文主要讲解如何在 Android 下实现高仿 iOS 的开关按钮,并非是在 Android 自带的 ToggleButton 上修改,而是使用 API 提供的 onDraw、onMeasure、Canvas 方法,纯手工绘制。基本原理就是在 Canvas 上叠着放两张图片,上面的图片根据手指触摸情况,不断移动,实现开关效果。
为了解释这个问题首先需要了解一下屏幕图像的显示原理。首先从 CRT 显示器原理说起,如下图所示。CRT 的电子枪从上到下逐行扫描,扫描完成后显示器就呈现一帧画面。然后电子枪回到初始位置进行下一次扫描。为了同步显示器的显示过程和系统的视频控制器,显示器会用硬件时钟产生一系列的定时信号。当电子枪换行进行扫描时,显示器会发出一个水平同步信号(horizonal synchronization),简称 HSync;而当一帧画面绘制完成后,电子枪回复到原位,准备画下一帧前,显示器会发出一个垂直同步信号(vertical synchronization),简称 VSync。显示器通常以固定频率进行刷新,这个刷新率就是 VSync 信号产生的频率。虽然现在的显示器基本都是液晶显示屏了,但其原理基本一致。
说实话,对于一个刚入门iOS两个月的新手而言,在拿到这个任务的时候整个人都是懵逼的,怎么做适配?哪些地方需要适配?该怎么做?一个个问题搞得头都大了。 首先,啥都不管,先在iPhone X上运行起来看看效果在说,运行之后出现的问题主要有如下几个: 屏幕尺寸还是6S上的尺寸大小,用 打印log确实如此 [[UIScreen mainScreen] bounds] 自定义的导航栏的返回按钮右移明显 UISearchBar的高度有变化,而且点击之后背景颜色和原先不一致 UITableview的header
自去年9月12日苹果发布会发布iPhone X之后,新颖的设计虽然引来不少骂声,但也给iOS设计和开发者带来了新的挑战,本文总结了iOS QQ空间对iPhone X适配过程遇到的问题和解决手段。
多态进度条,顾名思义,有多重状态,其实本控件主要是用来表示百分比进度的,由于之前已经存在了百分比进度条控件,名字被霸占了,按照先来先得原则,只好另外取个别名叫做多态进度条,应用场景是,某种任务有三种状态,比如正常状态、警戒状态、报警状态,这三种状态都分别有一个占比,需要用不同的颜色表示,这样就衍生出了此控件,类似于堆积图。接下来节假日四天,可以全身心投入研发还未完工的大屏UI程序,基础控件部分+二级界面部分都已经做好,现在专心整合到主界面和打通数据流(采用数据库采集+网络采集两种方式)。多态进度条也是为了此项目特意定制的。
颜色获取是指从图像或者其他的颜色源中获取颜色值的过程。在计算机中,颜色值通常由RGB值来表示,即红、绿、蓝三原色的取值组合。通常可以通过鼠标选择选取颜色和颜色值,或者通过程序代码指定颜色值来获取颜色。
领取专属 10元无门槛券
手把手带您无忧上云