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

UIview

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

71710

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

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

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

    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.6K10

    Swift:静态工厂方法

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

    2.4K10

    聊聊UI标准化

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

    98820

    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中使用单例

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

    51030

    Swift 中的热重载

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

    2K20

    汇编寄存器的规则

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

    2.6K50

    职场人必备的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(标签):是显示文本的控件,在App中UILabel是出现频率最高的控件。...在你不需要输入的时候,可以使用收回键盘的方法,收回弹出的键盘; (3)UITextField和UILabel相比,UILabel主要用于文字显示,不能编辑, UITextField允许用户编辑文字(输入...在App中UIButton是出现频率很高的控件; (2)UIButton与UILabel、UITextField侧重点不同,侧重于处理点按。当然UIButton类也提供了一些方法控制按钮外观。...(按钮)的属性及其使用,其他控件的使用都是类似的,了解了各种UI控件的属性及开发使用之后,就可以在测试用例设计及UI相关测试中,更精准地设计测试用例,针对每一类UI控件根据其属性设计特定的测试方法。

    2.6K20

    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

    常用开发技巧系列(一)

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

    882101

    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多的一个好处是:

    85810

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

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

    75340

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

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

    1.3K30

    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也是一样.

    96010

    Dart中的const,Flutter,Dart,React Native

    Flutter 做跨平台开发能够像 web 一样灵活,但同时提供流畅的性能。 Flutter 附带的部件库以及开源部件使其成为一个功能丰富的平台。...尽管该技术与 React Native 非常不同,但它在概念上提供了一种类似的方法,为原生控件提供一个抽象层。 同样,它在定制方面也有类似的缺点。 其次,Xamarin-classic 术语。...这种方法独立使用 Xamarin 的 iOS 和 Android 产品来构建特定平台的功能,就像直接使用苹果 / 安卓原生一样,仅在 Xamarin 情况下使用 C#或 F#。...要添加包或插件,只需在应用程序的根目录下的 pubspec.yaml 文件中包含依赖项即可。...例如,将代码重构为 StatefulWidget,因为动画是状态更改,并且将 AnimationController 传递给 State 类允许在构建部件时使用动画值。

    6300

    Swift之 ? 和 !

    文档中也有提到说,在使用Optional值的时候需要在具体的操作,比如调用方法、属性、下标索引等前面需要加上一个?...Swift提供了一种在参数括号前加上一个?的方式来安全地调用protocol的optional方法。 另外如果你需要像下面这样向下转型(Downcast),可能会用到 as?...的几种使用场景: 声明Optional值变量 用在对Optional值操作中,用来判断是否能响应后面的操作 用于安全调用protocol的optional方法 使用 as?...考虑下这一种情况,我们有一个自定义的MyViewController类,类中有一个属性是myLabel,myLabel是在viewDidLoad中进行初始化。...进行拆包,然后在执行后面的操作,当然如果该值是nil,也一样会报错crash掉。 var myLabel: UILabel! //!

    50930
    领券