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

UIview

UIKit框架还包含一组标准的子类,范围从简单的按钮到复杂的表,可以按原样使用。例如,UILabel对象画了一个文本字符串和UIImageView对象绘制图像。...因为视图对象是主要的应用程序与用户交互的方式,他们有许多责任。这里有几个: 绘图和动画 视图画内容矩形区域使用UIKit等技术,核心图形和OpenGL ES。...视图是第一次显示时,或者当全部部分变得可见由于布局变化,系统询问该视图画它的内容。视图包含使用UIKit定制内容或核心图形、系统调用视图的draw(_:)方法。...因为它将等待下一个绘图周期更新视图中,您可以调用这些方法多个视图同一时间更新他们。...因此,你应该叫UIView方法从代码运行您的应用程序的主线程。这可能不是严格必需是唯一一次创建视图对象本身,而是所有其他操作应该发生在主线程。

71010

iOS如何正确的实现行间距与行高

关于行间距 lineSpacing 先贴出一张 iOS UILabel 的默认排版样式: ? 大家也都能看出来,默认的排版样式,文本的行间距很小,显得文本十分挤。...这种时候,设计师就会提出行间距的需求,希望让文本展示得更美观。类似的标注就会这样: ? 通常来说既然设计师要求的是行间距,那么我们直接设置 lineSpacing 就好。...左侧是 iOS 设备,右侧 Android 设备,可以看到同样是显示 20 号的字体,安卓的行高会偏高一些。不同的 Android 设备上使用的字体不一样,可能还会出现更多的差别。...行高和行间距同时使用时的一个问题 不得不说行高和行间距我们都已经可以完美的实现了,但是我尝试同时使用它们时,发现了 iOS 的一个 bug(当然也可能是一个 feature,毕竟不 crash 都不一定是...好在我们通常是行高和行间距针对不同的需求分别独立使用的,它们分开使用时不会触发这个问题。所以 VirtualView-iOS 库,我暂且将高度计算的逻辑保持和系统一致了。

4.2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    UI篇-CATextLayer和 富文本的交融

    而NSMutableAttributedString有可以最自己内容作出颜色以及大小的调整,这样结合起来使用的话,就远比UILabel 灵活的多,效果也酷炫的多,也许CATextLayer就是为了NSMutableAttributedString...使用通过将AttributedString赋值给控件的 attributedText 属性来添加文字样式。有属性的控件有UILabel、UITextField和UITextView。...赋值, 并利用方法appendAttributedString: 添加入NSMutableAttributedString,将其赋给控件的attributedText属性。...attributedString; //label高度自适应[label sizeToFit]; [self.view addSubview:label]; 文本属性Attributes 1.直接上干货,多个属性可以一同使用...没卵用,不支持竖版 2.设置段落样式:段落样式中允许你设置文字与文字之间的行间距、字符间距、以及对齐模式,但是注意的是,设置段落样式的时候,必须保证控件的 numberofline属性必须为0 NSMutableAttributedString

    2.5K10

    Swift:静态工厂方法

    同样,这是许多开发人员选择子类化并创建内置视图的自定义变体的地方,就像这里的UILabel一样,我们将使用它来渲染标题: class TitleLabel: UILabel { override...(暂时), //以免将此功能添加到我们的应用程序全局使用UIButton。...在这种情况下,“自动版式”的声明性确实很方便——我们可以预先指定所有约束,而不必重写任何方法响应任何调用。 就像用于视图一样,工厂方法为我们提供了非常干净的调用方式。...通过命名上述工厂方法makeStub,我们还可以清楚地知道此代码仅用于测试,因此将来不会意外将其添加到我们的主要应用程序目标。...:方法可以被重写,静态方法可以

    2.4K10

    MNKit - 业务开发简化属性设置的工具

    接下来,简单介绍一个我实际开发抽取出来的工具 - MNKit MNButton 业务开发,UIButton控件应该算最常用的控件之一了,而且它的属性设置还贼麻烦,很多个都是要用 [ set...button,所以这里的方法传入的属性是BackgroundImage ---- MNLabel 业务开发,UIButton控件如果登场率如果不能排在第一,那么比它更常见的非UILabel莫属了,...和UIButton一样UILabel很常见,又经常有许多属性需要设置 - 字体大小、颜色、内容等等 //快速设置内容,文字颜色,字体大小,父控件 [MNLabel mn_labelWithTitle:...,就在网络请求成功 与 网络请求失败的block,添加一个[SVProgress dismiss] 如果有封装BaseViewController的,可以统一- (void)viewWillDisappear...是有动画效果,延迟加载的,如果网络请求过快(1s以内就请求成功),可能会导致提示框一直界面上出现 ---- 因为有一些我封装的工具可能就我们现在这种项目中用得到,如果有需要或者以后迭代过程可以通过外部参数控制的

    1.6K80

    Swift 的热重载

    但是如果您和我一样特别的一天,对代码库进行 200 - 500 次迭代,该怎么办呢?它增加了。 有一种更好的方法,被其他平台所接受,并且可以 Swift/iOS 生态系统实现。...热重载 热重载是关于摆脱编译整个应用程序并尽可能避免部署/重新启动周期,同时允许您编辑正在运行的应用程序代码并且能立即看到更改。 这种流程改进可以每天为您节省数小时的开发时间。...这是我的 Sourcery Pro[4] 应用程序的示例,其中加载了我所有的实际数据和逻辑,使我能够即时快速迭代整个应用程序设计,而无需任何重新启动、重新加载似的事情。...注入现在允许你更改 PaneAView 的任何东西,除了它的初始化API。这些变化将立即反映在你的应用程序。 ---- 一个更具体的例子?... MVVM / MVC 这样的标准架构可以获得免费的逻辑注入,重新编译你的,当方法重新执行时,你已经使用新代码了。

    2K20

    避免Swift中使用单例

    我倾向于避免使用单例的三个主要原因是: 它们是全局可变共享状态。它们的状态会自动整个应用程序中共享,而当这种状态意外改变时,往往会开始出现bug。 单例和依赖它们的代码之间的关系通常不是很好定义。...我们的代码现在可以安全地依赖它的模型,而且它有一个清晰的API与之交互,以便注销。一般来说,将各种单例和管理器重构为清晰分离的服务,是应用程序的核心对象之间建立更清晰关系的好方法。...许多情况下,我们甚至不需要对实现进行任何更改,并且可以简单地将它们的共享(share)实例作为服务传递。...同样的技术也可以用来改造我们应用程序的其他核心对象,我们可能一直以 "类似单例 "的方式使用这些对象,例如使用AppDelegate进行导航. extension UserManager: LoginService...如果你正在开发一个目前大量使用单例的应用程序,并且你一直经历它们通常导致的一些bug,希望这篇文章能给你一些灵感,让你知道如何能以一种非破坏性的方式开始摆脱它们。

    50430

    汇编寄存器的规则

    尽管这是一种很好的格式,但在眼睛上可能会有些困难。 在下一章,您将把汇编格式更改为 Intel,并且从那以后将完全使用 Intel 汇编语法。...你可以输出所有实现了 mouseDown: 的,你就可以看出这个方法被那些重写了,而不用去看源码。...幸运的是,register read 命令依然是可以使用的。 其次,Swift 相对于 OC 并不是动态的。事实上,有时候最好假设 Swift C 语言一样。...从调试的角度来看,这也很有用,因为您可以快速直观地验证 -[UILabel setText:] SpringBoard 应用程序的执行位置,并运行断点条件以查找设置特定 UILabel 文本的确切代码行...我经常发现,即使我确实有源代码的应用程序使用方法也更快,然后应用程序中看到数千个 IBAction。 ... 但仅出于演示目的,让我们将其应用于 iOS Maps 应用程序

    2.5K50

    职场人必备的WORD排版十大技巧

    答: Word 要选中文件内容时,有一些快捷的操作方法,掌握好它们可以大大提高你的工作效率。...5 整个文件内容的选取: 把指针移到该文件任一行首(指针变成向右的箭头时),快速单击鼠标左键三次便可选中整个文件内容(也可利用组合键“ Ctrl+A ”快速选定)。...5.字号快速调整 问: Word 编辑文字时,有时只需将字号缩小放大 一磅 ,而若再利用鼠标去选取字号将影响工作效率,请问有没有方法快速完成字号调整?...7.移动光标快速定位 问: Word 编辑文件时,经常需把光标快速移到前次编辑的位置,而若采用拖动滚动条的方式非常不便,请问有没有快捷的方法呢? 答:有,可以利用一种组合键进行快速定位。...答:其实方法非常简单,需要调整 Word 文件中行间距时,只需先选择需要更改行间距的文字,再同时按下“ Ctrl+1 ”组合键便可将行间距设置为单倍行距,而按下“ Ctrl+2 ”组合键则将行间距设置为双倍行距

    1.5K70

    iOS UI控件了解一下

    UIWindow widow是窗口,每个app都需要借助window将内容展现给用户看,iOS使用UIWindow来表示窗口,通常一个应用程序只创建一个UIWindow对象; 创建window示例代码...UILabel 1)UILabel是什么? (1)UILabel(标签):是显示文本的控件,AppUILabel是出现频率最高的控件。...在你不需要输入的时候,可以使用收回键盘的方法,收回弹出的键盘; (3)UITextField和UILabel相比,UILabel主要用于文字显示,不能编辑, UITextField允许用户编辑文字(输入...AppUIButton是出现频率很高的控件; (2)UIButton与UILabel、UITextField侧重点不同,侧重于处理点按。当然UIButton也提供了一些方法控制按钮外观。...(按钮)的属性及其使用,其他控件的使用都是类似的,了解了各种UI控件的属性及开发使用之后,就可以测试用例设计及UI相关测试,更精准地设计测试用例,针对每一UI控件根据其属性设计特定的测试方法

    2.6K20

    聊聊UI标准化

    从这就可以看出 Styles可以理解成 UIAppearance,而 Symbolds就是一个个封装好的 组件。...业务方拿到就可以直接使用,不需要进行任何额外的参数设置 Phone和Pad用的图片等资源文件会不一样 相同平台上的不同APP主色系不一样使用的切图资源不一样 组件,自然而然就想到了 cocoapods...示例如下: 可以自由设置文本的内边距: /** 常规使用的Label,可以自定义文本的padding,以期达到更好的展示效果 */ @interface YZLabel : UILabel...,iOS里主要借助了 UIAppearance(非UIKit的可以自己实现一套类似的协议)。...五、成果 整个标准化过程,不管是设计语言小组全程参与,还是标准组件架构的设计,都充分考虑了多APP的使用场景,因此标准组件(设计标准&组件标准)是多APP通用(有赞通用),因此为大幅提升开发与设计的效率提供了保证

    94620

    iOS:KVOKVC 的概述与使用

    二,使用方法 系统框架已经支持KVO,所以程序员使用的时候非常简单。 1. 注册,指定被观察者的属性, 2. 实现回调方法 3....KVC 利用KVC字典转模型实现原理: 遍历字典的所有Key,去模型查找有没有跟key相似的属性名。...遍历出name这个key,去模型查找有没有setName:方法,找到就直接调用,给模型的成员属性赋值。...self.name = dict[@"name"]; 去模型查找有没有name这个属性名,如果找到,直接通过属性赋值 name = dict[@"name"]; 去模型查找有没有_name这个属性名...二,使用方法 关键方法定义:NSKeyValueCodingprotocol KVC支持对象和内建基本数据类型。 获取值 valueForKey:,传入NSString属性的名字。

    1.5K80

    来自Kenneth Reitz大神的建议:避免不必要的面向对象编程

    Kenneth Reitz大神的建议 Python 有时被描述为一种面向对象的编程语言。这可能对大家有些误导,需要加以澄清。 Python ,所有东西都视为一个对象,并且可以按对象处理。...函数、、字符串,甚至类型都是 Python 的对象:任何对象一样,它们有一个类型,可以作为函数参数传递,并且它们可能有方法和属性。按这种理解, Python 是一种面向对象的语言。...函数的隐式上下文由全局变量和持久层的数据项(使用方法访问)组成。副作用是指函数对其隐式上下文所做的更改。如果函数会保存删除全局变量持久层的数据,则称它有副作用。...显然,面向对象编程许多情况下是有用的,甚至是必要的,例如在开发图形化桌面应用程序游戏时,被操作的东西(窗口、按钮、化身、车辆)计算机内存具有相对较长的寿命。 猫猫的思考 以上就是K神的建议。...公司有个项目的老版本代码,充斥了各种全局变量,小伙伴们维护时吃了好多苦头!)JS可以用Object.freeze 方法令minimum成为不可变对象,Python中有类似的实现么?

    74640

    iOS字典转模、xib的使用、自定义视图

    文件,网络) 使用方法实例化模型数组 //方法可以快速实例化一个对象--把代码放在它最应该呆的地方 + (instancetype) appInfoWithDictionary : (NSDictionary...+ (instancetype) appView;//使用方法加载xib + (instancetype) appViewWithAppInfo:(KNAppInfo *) appInfo;//使用方法加载...xib,参数用于视图的数据装配 1.3 九宫格计算方法 1)每一列的x值一样,x值由列号决定 2)每一行的y值一样,y值由行号决定 //搭建界面,九宫格(以View为单元,内含UILabel...C++的11版本,也有类似的关键字auto类型 可见所有的语言都致力于,使语言更容易使用 instancetype 类型表示上跟id一样可以表示任何对象类型) instancetype 主要用于方法实例化对象时...,让编译器主动推动对象的实际类型,以避免使用ID,造成开发不必要的麻烦 1.instancetype 只能使用于返回值类型,不能id一样用于参数类型;但instancetype比id多的一个好处是:

    85410

    常用开发技巧系列(一)

    前言:         我们iOS开发的过程,你要是知道一些特别的小技巧的话,其实是可以帮你省很多事的,当然这东西也不需要我们专门去记,估计没有几个开发人员喜欢死记硬背,有需要,上网找,边学边用才是技巧的正确的打开方式...,还有许多在TextFile的.h文件里面,大家可以去学习, 只要我们继承与TextFile,重写它们的下面相应的方法即可: //控制显示文本的位置 -(CGRect)textRectForBounds...默认为 nil NSString *const NSVerticalGlyphFormAttributeName; 搭配上面的阴影使用效果更好 */ 五:侧滑手势     这里说一下,要是导航栏上...,当你push到下一个界面的时候,你要是使用的是系统的返回方式的话,那你的应用是自己会支持侧滑手势,你可以自己试一下 ,但在很多的情况下,我们的返回按钮是会自定义的。...// 下面的代码写在你整个项目的基里面去 if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer

    853101

    Objective C (iOS) for Qt C++ Developers(iOS开发,Qt开发人员需要了解什么?)

    托付对象的一个托付方法被对象调用通知某些事情已经发生。这很类似于Java的接口 2.与Qt相关相类似的东西 与语法一样重要是相关的库所提供的iOS(和OS X)。...我认为如今的大多数移动应用程序使用HTTP。Qt您将使用QNetworkAccessManager。...很多其它高级先进的东西能够用NSOperationQueue中央CPU调度。 NSRunLoop相当于Qt的QEventLoop 。...您使用“outlets”链接与他们的同一界面构建器UI文件里控件的实例(比如UIButton、UILabel),用CTRL组合键进行拖拽....我想说的差点儿全部的iOS应用程序都会使用表视图。 假设你已经使用过QWebView,换成UIWebView也是一样.

    94610

    歌词显示控件的实现(下)——自定义View

    在上篇文章呢,分享了关于lrc歌词文件的解析方法,根据歌词文件格式,解析出对应实体。...但是,怎样才能让让自己的音乐播放器的歌词网易云音乐一样,随音乐(歌词时间)滚动、当前歌词高亮、其他歌词渐变等效果呢?...注意赋值实体时,View其实已经绘制过了,不过界面上什么都没有显示(因为LyricInfo为null,绘制时会返回不再继续),赋值实体后,刷新一下界面: ?...计算文字高度,应该使用画笔的getTextBounds方法,从文字区域的Rect获取文字所占的高度。 06 — 计算偏移量 ?...但是,这样实现的话,用户一直滑动,整个歌词内容区域就会滑动出我们的可视区域,也就是常说的overScroll,如果不加以限制将会是一种非常差的用户体验。

    1.1K10

    【IOS开发基础系列】Storyboard专题

    使用 MainWindow.xib 的时候不同,故事板不会包含应用程序委托。...由于无法从nib中加载应用程序委托,也无法从故事板文件中加载应用程序委托,我们必须告诉UIApplicationMain 应用程序委托的名称,否则它根本无法找到应用程序委托。...如果是使用IB , MainWindow.xib中会有应用程序委托的一个引用,同时你可以将顶层的ViewController 连接到应用程序委托的IBOutlet 属性。但现在使用故事板就不可能了。...注意,我将的名字和重用 ID 取成了一样——都叫做 PlayerCell——这仅仅是因为我喜欢这样。其实二者毫无干系,你完全让它们不一样。         ...当然,你仍然需要导入 PlayerCell : #import "PlayerCell.h"         运行程序,跟前面一模一样,但在表格中使用的是我们自己的TableViewCell 子类。

    1.1K30

    这 10 道 Spring Boot 常见面试题你需要了解下

    这意味着你不再需要启动Tomcat,Glassfish其他任何东西。 需要更少的配置 因为没有web.xml文件。...只需添加用@ Configuration注释的,然后添加用@Bean注释的方法,Spring将自动加载对象并以前一样对其进行管理。...由于配置被定义为JavaConfig,因此用户可以充分利用Java的面向对象功能。一个配置可以继承另一个,重写它的@Bean方法等。 减少消除XML配置。...但是,许多开发人员不希望XML和Java之间来回切换。 JavaConfig为开发人员提供了一种纯Java方法来配置与XML配置概念相似的Spring容器。...JavaConfig提供了一种类型安全的方法来配置Spring容器。由于Java 5.0对泛型的支持,现在可以按类型而不是按名称检索bean,不需要任何强制转换基于字符串的查找。

    99020
    领券