在shell中有特殊含义。 在shell中如果想显示的话,这个样子 \?...-> 标准的输入输出和IO重定向(这个我就不解释概念了,大致就是这么个意思,一个unix的系统都是标配有的东西,抽象了一些东西) 用Sort对4个名字来排序,(注意,标准的UNIX惯例是完成最后一行输入后...1⃣️指定文件序列结束,Ctrl+D) 用这种方式,可以不用吧名字写入文件。...命令末尾家& 会主动显示两个数字: 命令的作业号 进程ID->PID ps命令不加任何参数时,显示你所拥有的进程状态 PID:进程ID TTY:进程所在的终端号 CMD:进程名字 TIME:以分秒显示所使用的计算机时间
Shell这个语言吧,在很多大佬看来,他并不是一个适合新手来学习的语言,或者说它不适合入门,不管怎么说,它的历史和Unix的历史是一样长的。而且最近我是尝试着迁移到unix上的。...「重命名」) 参数和cp是一样的 这里需要注意一下。在执行mv和cp命令时。程序不会管你第二个参数的文件是不是存在。...在unix的系统里面,所有的目录都是有两个身份的,要不他是上一级的子目录,要不是下一级的父目录。...文件最后的修改时间 文件名 14.mkdir,创建一个目录 15.目录之间复制文件 a->b(1) c->d(1) cp a/b c/d cp a/b/1 c/d/1 因为1,1 两个文件在不同的目录中...如果目标文件打算常用和源文件相同的名字,(在不同的目录里面),只需要制定目录作为第二个参数就行 cp a/b/1 d(在执行这个命令时,会发现二参数是一个目录,于是直接复制) 16.ln(不是数学概念哦
Masonry有自己的布局DSL,它提供了一种链式调用的方式来描述NSLayoutConstraints,从而使布局代码更简洁,更易读。 Masonry支持iOS和Mac OS X....和NSLayoutAttribute的封装 MASViewConstraint是对NSLayoutConstraint的封装,最后将布局约束添加到一个数组当中 block回调执行完毕之后,最后对布局进行安装...,那么约束就添加在viewB上从而对viewA起到约束作用。...UIColor.redColor); }]; [superview addSubview:label]; 不需要初始化的参数可以直接不写,只初始化我们需要的 总结 另外很多人担心自动布局的性能问题,事实上苹果已经在...可以看到在iOS12之前auto layout性能会随着嵌套视图的增加呈指数增长,但是在iOS12上苹果官方已经对此进行了优化,随着嵌套视图的增加性能问题得到了大幅的提升。
在第一次搜索中,ed从文件起始部分开始查找,在第一行中发现字符序列was符合指定的模式并将其打印出来。 重复上一次的搜索(ed命令/)使得文件的第二行被显示出来,因为and与指定模式匹配。...前缀1,$指明在全文范围内应用替换操作,替换操作的格式为s/old/new/g,其中s表明是替换操作,斜线用来界定被替换内容和替换内容,g表明执行全局替换,而不仅仅是替换某一行。...一般而言,如果你想匹配任何对于正则表达式来说有特殊含义的字符,可以在该字符前加上一个反斜线(\)来去除其特殊含义。例如,下面的正则表达式 \.$ 能够匹配以点号结尾的行。正则表达式 ^\.....$/ 搜索以点号结尾的行 development. 1,$s/$/>>/ 将>>添加到每行的行尾...^和$的一种普遍用法是下面的正则表达式 ^$ 它能够匹配空行。注意,这个正则表达式和下面的正则表达式不同: ^ $ 它匹配的是由单个空格组成的行。 我不行了,就写这么多今天。
BreakOutToRefresh - swift,上拉和下拉刷新。 GearRefreshControl - swift,上拉和下拉刷新。...UIView-FDCollapsibleConstraints - 一个AutoLayout辅助工具,最优雅的方式解决自动布局中子View的动态显示和隐藏的问题。...EasyPeasy.swift - 编程方式自动布局框架库。...简单易用的属性文本控件(无需了解CoreText),支持富文本,图文混排显示,支持添加链接,image和UIView控件,支持自定义排版显示。...TTTAttributedLabel - 一个文字视图开源组件,是UILabel的替代元件,可以以简单的方式展现渲染的属性字符串。
在iOS开发及测试中,除了业务逻辑和算法之外,UI控件是最重要的一部分,因此熟悉UI控件及实现原理,对于了解开发实现和测试是相当必要的,这篇文章将给大家介绍常用的UI控件及实现。...下面我们将引入UIView; 3. UIView view(视图)代表屏幕上的一个矩形区域。...origin也是一个结构体,包含2部分内容:x和y(ios坐标系以左上角为坐标原点(0,0),以原点向右侧为X轴正方向,原点下侧为Y轴正方向);size同样是一个结构体,包含2部分内容:width和height...UIView的操作方法 1)添加视图 UIView的addSubview:方法可以添加子视图,对于同一个视图的所有子视图来讲,后添加的子视图会把已加的子视图盖在下面。...UILabel 1)UILabel是什么? (1)UILabel(标签):是显示文本的控件,在App中UILabel是出现频率最高的控件。
生成 UIView 控件 并 查看 View 层级 ( 1 ) 代码 生成 UIView 控件 ( ① 创建控件 | ② 设置 frame | ③ 设置颜色 | ④ 添加控件 ) 代码生成 UIView...容器 中 ; 3.添加按钮 : 添加两个按钮 , 两个按钮的功能分别是 生成 UIView 控件 和 清空 UIView 控件 ; ---- ( 3 ) 在 ViewController.m...]; 3.控件类型准备 : 父容器中添加 UIButton 组件 , 用于区分 UILabel 和 UIButton , 这里只删除 UILabel 控件 ; 4.判定组件类型 : 使用 isKindOfClass...1 行 , 那么 UILabel 自动换行 也只是显示 1 行 , 因此 如果需要自动换行的话 , 需要给 UILabel 设置足够的行高 ; 3.宽高控制 : UILabel 的 宽度 和 高度...Bundle 简介 ( 1 ) Bundle 简介 Bundle 简介 : 应用程序名称.app 是 Bundle , 是一个 目录 ; 1.Mac 中的 Bundle : 在 Mac 中的 Finder
其框架小巧,代码简洁,并且通过系统的JavaScriptCore框架与Objective-C进行交互,这使其在安全性和审核风险上都有很强的优势。... = [UIColor redColor]; return view; } 在工程中添加一个js文件,编写如下: require('UIView, UIColor, UILabel')...这个类,需要在使用前进行如下引用: require('UIView') 同样也可以一次对多个Objective-C类进行引用: require('UIView, UIColor, UILabel') 还有一种更加简便的写法...重写或者添加类的方法: 在JavaScript中使用defineClass来定义和修改类中的方法,其编写格式如下所示: /* classDeclaration:要添加或者重写方法的类名 字符串 如果此类不存在...,和Objective-C中遵守协议的方式一致,如下: defineClass("ViewController2: UIViewController ", {
拖到中间会有 水平 和 垂直两条 蓝色引导线; -- 边界引导线 : 如果把控件拖到边界, 会出现边界引导线, 说明不能再向外拖了; 上 : 左 : 右 : 下 : ...UIView 属性 UIView 属性 : (1) Mode 属性 Mode 属性 : -- 主要作用 : 用于控制 UI 控件内图片的对齐方式, 是否缩放适配控件; -- Scale To Fit...View 上 [rootView addSubview : button] ; // 创建 UILabel 对象 label = [[UILabel alloc] initWithFrame...自定义 UI 控件 (1) 自定义组件简介 自定义组件简介 : -- UIView 基类 : 所有的 UI 控件都继承了 UIView 基类, UI 组件在 UIView 提供的空白区域上绘制具体的细节...根控件, 使用 command + option + 3 打开身份检查器, 由身份检查器上可以看到 其 Custom Class 属性为 UIView, 因此该界面的根控件时 UIView; --
模式是一项管理复杂度的技术,几乎所有模式都遵循两个原则: 针对接口编程,而不是实现。 多用组合,少用继承。 很多模式看上去很类似,这是因为实现各种模式的方式一般就是继承和组合。...《设计模式》一书的副标题是“可复用面向对象软件的基础”,所以显然这23个设计模式是用于面向对象软件设计的,而众所周知,最适合面向对象这种范式的领域其实是 GUI 编程领域(这也是《设计模式》中大部分应用实例都是一些...我个人认为抽象工厂模式和生成者模式的抽象层级最高,因为它们都可以分别用工厂方法和原型实现。而工厂方法和原型是同一个层级的,它们在大多数时候是互斥的,一般不能结合使用。...一个界面在打开应用的时候显示,Label 和 Button 会显示“Hello……”,另一个在应用关闭前显示,Label 和 Button 会显示“Goodbye……”。...但是一旦扩充了新产品(增加了新的XXXLabel或者XXXButton),就得去修改相应的工厂方法以支持新产品。
view,view拿到模型数据后给内部子控件设置对应的数据 代码封装 新建一个继承UIView的类 在initWithFrame:方法中添加子控件(也可以使用懒加载) 重写模型属性set方法,在set方法中设置模型属性到子控件上...上的layoutSubviews事件 - 改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件 完整的例子 @class ImageData; @interface...*)label{ if (_label == nil) { UILabel *label = [[UILabel alloc]init]; [label setBackgroundColor...的类 新建一个xib文件(xib的文件名最好和控件名一样,修改最外面那个控件的class为控件类名 ) 创建xib 添加子控件、设置子控件属性...:nil] lastObject] 重写模型属性set方法,在set方法中设置模型属性到子控件上 完整的例子 #import "ImageDataView.h" #import "ImageData.h
本文简单介绍在 Swift 中用面向协议编程(POP)的方式实现模板方法。...在使用 Code + AutoLayout 写 UI 时,需要先添加子视图,再为子视图添加约束。...由于 AutoLayout 是依赖于视图间的相互关系的,如果先为子视图添加约束再将其加到父视图上的话,程序将会崩溃。...所以几乎每次在写 View 或者 ViewController 的时候我都会写这么几个方法:configViews、addSubviews、configConstraints。...= UIButton() let defaultIcon = UIImageView() let defaultLabel = UILabel() init() {
滚动视图还满常见的,这里学习了一下基本所有的用法、属性设置和委托,单讲一个ScrollView也很简单,直接上代码远比一个个讲要清晰明了地多。...*10); //设置当滚动到边缘继续滚时是否像橡皮经一样弹回 self.scrollView.bounces = YES; //设置滚动条指示器的类型,默认是白边界上的黑色滚动条...//设置是否只允许横向或纵向(YES)滚动,默认允许双向 // self.scrollView.directionalLockEnabled = YES; //设置是否采用分页的方式...中,第二个要滚动才能看见 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 200, 320, 40)];...中添加了一个设置了大小的ScrollView,在ScrollView中添加了两个Label,两个Label的开始y值不同所以第一个一开始就能看见,而第二个要向下滚动才能看见,如图: 由于截图时间来不及所以第二张图看不到滚动条了
我们会发现,跨平台以及原生端包括 iOS 和安卓,都会对 FlexBox 布局多少有点涉足,在现在大前端的开发趋势下,统一的布局方式和思路显得尤为重要。...当位置和大小被布局接管后,视图之间的依赖没有了,转化为添加视图的顺序和各自的属性,会发现声明式的API在布局系统中能非常好地契合。...UIView |-- UILabel |-- UIButton 同时 View 之间没有相互联系,移植性高。 为什么不通过描述对象的方式来声明而采用直接使用 View 进行声明呢?...2.2 布局设计 由于我们的结构和 API 设计是基于 UIView 的方式,布局在设计中,其实也是一个 View,一个具备布局能力的视图容器。布局能力我们是可以进行抽象的,即布局的算法。...为了解决这个问题,在样式上处理上,我们导入了 Style 概念,和 CSS 一样,Style 是对样式的描述,调用方可以任意组合 Style,把样式和从 UI 代码中抽离,能够很好地减少自定义 view
现在把代码放上来,通过这个计算器,可以学习简单的封装:将逻辑与界面分离并提供接口的编程方式,这也是我们学习面向对象的必要点。...,在计算器的显示屏上还需要显示输入的内容,同时,显示屏还兼有计算结果的功能。...首先在DWCalculator工程上新建一个名为DWScreen的类文件,继承自UIView,作为计算器的显示器控件。...class DWScreen: UIView { var inputLabel:UILabel //用于显示历史记录信息 var historyLabel:UILabel...当用户完成一次计算后,计算结果会显示在显示屏上。此时如果用户继续输入,则进行下一轮的计算,显示屏的上次结果应该被清空。
每一个UIview都有一个CALayer实例的图层属性,也就是所谓的backing layer,视图的职责就是创建并管理这个图层,以确保当子视图在层级关系中添加或者被移除的时候,他们关联的图层也同样对应在层级关系树当中有相同的操作...在iOS和Mac OS两个平台上,事件和用户交互有很多地方的不同,基于多点触控的用户界面和基于鼠标键盘有着本质的区别,这就是为什么iOS有UIKit和UIView,但是Mac OS有AppKit和NSView...contents这个奇怪的表现是由Mac OS的历史原因造成的。它之所以被定义为id类型,是因为在Mac OS系统上,这个属性对CGImage和NSImage类型的值都起作用。...如果你有游戏编程的经验,那么你一定对图片拼合的概念很熟悉,图片能够在屏幕上独立地变更位置。抛开游戏编程不谈,这个技术常用来指代载入拼合的图片,跟移动图片一点关系也没有。 ...总得来讲,当我们视图显示一个图片的时候,都应该正确地显示这个图片(意即:以正确的比例和正确的1:1像素显示在屏幕上)。
(1) 在创建约束之后,需要将其添加到作用的view上 在添加时要注意目标view需要遵循以下规则: 1)对于两个同层级view之间的约束关系,添加到它们的父view上 ?...2)对于两个不同层级view之间的约束关系,添加到他们最近的共同父view上 ? 3)对于有层次关系的两个view之间的约束关系,添加到层次较高的父view上 ?...在没有Autolayout之前,UILabel的文字内容总是居中显示,导致顶部和底部会有一大片空缺区域 ?...有Autolayout之后,UILabel的bounds默认会自动包住所有的文字内容,顶部和底部不再会有空缺区域 ?...UILabel实现包裹内容 设置宽度约束为 <= 固定值 设置位置约束 不用去设置高度约束 基于Autolayout的动画 在修改了约束之后,只要执行下面代码,就能做动画效果 [UIView animateWithDuration
一:介绍 在项目中遇到数据展示需求时,往往会通过,以列表的形式展示出数据或者以表格的形式展示。但是并不能直观的观察数据的变化,如果通过图表的形式来展示,就可以更快捷的获取到数据变化情况。...图表展示的方式有很多,那么如何码出一个高颜值原生折线图呢?下面给大家分享统计图包括折线统计图、柱状图、环形图。 源码Demo获取方法 关注 【网罗开发】微信公众号,回复【96】便可领取。...下载源码 在demo中找到FBYLineGraph文件夹,将文件夹拖入自己的项目中。DEMO截图 ? 2....柱状图设置属性添加内容 // 柱状统计图 - (void)barChartView { UILabel *titleLab = [[UILabel alloc] initWithFrame:CGRectMake...环形图设置属性添加内容 // 环形统计图 - (void)ringChartView { UILabel *titleLab = [[UILabel alloc] initWithFrame:CGRectMake
本文就介绍如何自定义alertView,看完你就懂得制作属于自己的alertView了 一、创建DWAlert.swift 创建一个类名为在DWAlert.swift,在class DWAlert:...UIView里面添加一些常量和属性 //const 常量 let kAlertWidth = 245.0 let kAlertHeight = 160.0 let kTitleYOffset = 15.0...var alertContentLabel: UILabel! var button: UIButton! var backImageView: UIView!...方法中添加的backImageView背景蒙版 2、获取当前主窗口,并定义一个alertView的frame 3、利用UIView.animate对alertView进行动画操作。...五、使用DWAlert 在ViewController创建一个按钮,并添加一个点击事件ClickMe,在方法里面创建alertView @IBAction func ClickMe(_ sender:
不难发现,这样以位移的方式指定autoresizingMask枚举值,也契合了storyboard中可以给子控件设置多个方向的约束的情景。如下图: ?...Snip20160515_3.png 4.如果view的约束只和自己有关系,那么添加到自己身上。比如宽高约束。 UILabel使用AutoLayout UILabel默认内容的显示方式是垂直居中的。...父控件随子控件变化而变化 如果希望父控件随子控件(UILabel/UIView)高度的变化而变化,就不要给父控件添加高度约束,只需要子控和向父控件在垂直方向上添加约束,这样子控件高度改变,父控件高度也会随之改变...可以通过在StoryBoard上的控件和对应的.h或者.m文件之间拖线添加IBOutlet引用来证明。...Masonry采用链式编程思想,极大的方便了开发者。大家可以在GitHub上找到Masonry。
领取专属 10元无门槛券
手把手带您无忧上云