ag真人iOS开发的一些Tips,各种demo链接汇总

2019-09-11 16:07栏目:专项工作
TAG:

原链接:cyrill的blog

ag真人 1

//联系人:石虎QQ:1224614774昵称:嗡嘛呢叭咪哄

RTLabel- RTLabel基于UILabel类的拓展,能够支持Html标记的富文本显示,它是基于Core Text,因此也支持Core Text上的一些东西。32位,很久没有更新了。

RTLabel-富文本,RTLabel支持64位。

TYAttributedLabel- TYAttributedLabel。简单易用的属性文本控件(无需了解CoreText),支持富文本,图文混排显示,支持添加链接,image和UIView控件,支持自定义排版显示。

TQRichTextView-用于做富文本视图控件显示,用于即时通讯的表情显示,以及资源评论的富文本显示。

TTTAttributedLabel-一个文字视图开源组件,是UILabel的替代元件,可以以简单的方式展现渲染的属性字符串。另外,还支持链接植入,不管是手动还是使用UIDataDetectorTypes自动把电话号码、事件、地址以及其他信息变成链接。用TTTAttributedLabel创建变化丰富的UILabel-网易新闻iOS版使用。

//======================

MLEmojiLabel-自动识别网址、号码、邮箱、@、#话题#和表情的label。可以自定义自己的表情识别正则,和对应的表情图像。(默认是识别微信的表情符号),继承自TTTAttributedLabel,所以可以像label一样使用。label的特性全都有,使用起来更友好更方便。

FXLabel- FXLabel是一个功能强大使用简单的类库,通过提供一个子类改进了标准的UILabel组件,为字体增加了阴影、内阴影和渐变色等,可以被用在任何标准的UILabel中。FXLabel还提供了更多控件,可以对字体行距、字体间距等进行调整。

WFReader-一款简单的coretext阅读器,支持文本选择、高亮以及字体大小选择等。

WPAttributedMarkup- WPAttributedMarkup is a simple utility category that can be used to easily create an attributed string from text with markup tags and a style dictionary。

KMPlaceholderTextView-可显示多行placeholder的textView,可以在IB里面设置-- swift。

//======================

HHFlashSwitch-一个另类的UISwitch,选择后,背景水波扩散变色效果。

UUColorSwitch- Switch开关动画效果,当打开开关时,Switch可实现平滑渲染过渡到父视图的效果。

UITextViewDIYEmojiExample-UITextView编辑时插入自定义表情-简单的图文混编。

Shimmer- BlingBling闪光效果,酷炫的Label的效果,可以用于加载等待提示。

ZSSRichTextEditor-适用于iOS的富文本WYSIWYG编辑器,支持语法高亮和源码查看。ZSSRichTextEditor包含所有WYSIWYG标准的编辑器工具。

//======================

RichEditorView- swift,一套可定制富文本编辑器组件及示例。功能完整、代码简练、实现逻辑巧妙(编辑器核心与WebView结合,采用HTML5 contentEditable编辑模式,执行JS配套命令execCommand实现富文本编辑功能)。

DTCoreText-可以解析HTML与CSS最终用CoreText绘制出来,通常用于在一些需要显示富文本的场景下代替低性能的UIWebView。DTCoreText源码解析。

ag真人,CSGrowingTextView-用作即时通讯文本框和评论文本框使用,可以显示多行输入。

MarkdownTextView-显示Markdown的TextView。

SwiftyMarkdown-用swift写的markdown解析库。

//======================

高仿微信限定行数文字内容-采用Autolayout高仿微信纯文字限定行数。

FuriganaTextView-实现复杂的日文韩文排版。

ParkedTextField-带固定文本的输入组件。

LTMorphingLabel- swift能够实现文字变形动画效果的Label,用Swift写的一个能够实现文字变形动画效果的Label,很炫。

GJCFCoreText-图文混排。

//======================

AttributedLabel-显示性能数量级UILabel的AttributedLabel。无畏无惧、挑战权威。

FFLabel-自动检测URLs,@username,#topic#等关链词。实用的标签文本小组件。

TextFieldEffects-标准的UITextField有些枯燥么?来认识一下TextFieldEffects吧!废话不多说,只要看几个例子,是啊,都是些简单的dropin控制器。甚至可以在storyboard中使用IBDesignables。

AutocompleteField-可应用于iOS应用中文字输入框自动补全的场景,兼容到iOS 8。

Splitflap.swift-可用于快速给iOS应用创建文字翻转的动画效果。

//======================

WordPress-Editor-iOS-一个文本编辑器简书和新浪博客都在用。

YYText-功能强大的iOS富文本框架。

placeholder_TextView-带有placeholder的TextView:带有提示信息的textview,使用懒加载的思想,支持扩展、自定义,类似许多APP内部的意见反馈页面。

FloatLabelFields.swift- FloatLabelFields.swift浮动标签输入效果类。

M80AttributedLabel- M80AttributedLabel实现文字与表情的混排。一般使用气泡作为背景。

//======================

HPGrowingTextView- HPGrowingTextView聊天输入文字,可以根据输入文字的多少自动改变输入框的高度。

cleartext-mac.swift-提供一千个常用单词的编辑器。

GlitchLabel.swift-可定制“黑文字标签”类库,熟称晃瞎你的眼文字标签。

//======================

#define TICK NSDate *startTime = [NSDate date]#define TOCK NSLog(@"Time: %f", -[startTime timeIntervalSinceNow])// 使用时TICK// do your work hereTOCK

Swift数组使用有序列表存储同一类型的多个值。相同的值可以多次出现在一个数组的不同位置中。Swift数组会强制检测元素的类型,如果类型不同则会报错,Swift数组应该遵循像Array<Element>这样的形式,其中Element是这个数组中唯一允许存在的数据类型。如果创建一个数组,并赋值给一个变量,则创建的集合就是可以修改的。这意味着在创建数组后,可以通过添加、删除、修改的方式改变数组里的项目。如果将一个数组赋值给常量,数组就不可以更改,并且数组的大小和内容都不可以修改。

使用layerallowsEdgeAntialiasing属性消除锯齿

1.创建数组

我们可以使用构造语法来创建一个由特定数据类型构成的空数组:

var someArray = [SomeType]()

以下是创建一个初始化大小数组的语法:

var someArray = [SomeType](repeating: InitialValue, count: NumberOfElements);

以下实例创建了一个类型为Int,数量为3,初始值为0的空数组:

var someInts = [Int](repeating: 0, count:3)

以下实例创建了含有三个元素的数组:

var someInts : [Int] = [10, 20, 30]
self.layer.allowsEdgeAntialiasing = YES;// 设置对应view的layer这个属性

2.访问数组

我们可以根据数组的索引来访问数组的元素,语法如下:

var someVar = someArray[index]

index索引从0开始,即索引0对应第一个元素,索引1对应第二个元素,以此类推。我们可以通过以下的实例来学习如何创建、初始化、访问数组:

var someInts = [Int](repeating: 10, count: 3)var someVar = someInts[0]print("第一个元素的值")print("第二个元素的值(someInts[1])")print("第三个元素的值(someInts[2])")

以上程序执行输出结果为:

第一个元素的值 10第二个元素的值 10第三个元素的值 10

引用网上的图,不知道原作者是谁。

3.修改数组

你可以使用append()方法或者赋值运算符 += 在数组末尾添加元素,如下所示,我们初始化一个数组,并向其添加元素:

var someInts = [Int]()someInts.appendsomeInts.appendsomeInts += [40]var someVar = someInts[0]print("第一个元素的值")print("第二个元素的值(someInts[1])")print("第三个元素的值(someInts[2])")

以上程序执行输出结果为:

第一个元素的值 10第二个元素的值 10第三个元素的值 10

我们也可以通过索引修改数组元素的值:

var someInts = [Ints]()someInts.appendsomeInts.appendsomeInts += [40]someInts[2] = 50 //修改最后一个元素var someVar = someInts[0]print("第一个元素的值")print("第二个元素的值(someInts[1])")print("第三个元素的值(someInts[2])")

以上程序执行输出结果为:

第一个元素的值 20第二个元素的值 30 第三个元素的值 50

3.jpg

4.遍历数组

我们可以使用for-in循环来遍历所有数组中的数据项:

var someStrs = [String]()someStrs.appendsomeStrs.appendsomeStrs.appendsomeStrs += ["Google"]for item in someStrs { print}

以上程序执行输出结果为:

AppleAmazonSonyGoogle

如果我们同时需要每个数据项的值和索引值,可以使用String的enumerate()方法来进行数组遍历。实例如下:

var someStrs = [String]()someStrs.appendsomeStrs.appendsomeStrs.appendsomeStrs += ["Google"]for (index, item) in someStrs.enumerated() { print(“在 index =  位置上的值为 }

以上程序执行的输出结果为:

 在 index = 0 位置上的值为 Apple 在 index = 1 位置上的值为 Amazon 在 index = 2 位置上的值为 Sony 在 index = 3 位置上的值为 Google

终端cd到相应目录,执行

5.合并数组

我们可以使用加法操作符来合并两种已存在的相同类型数组。新数组的数据类型会从两个数组的数据类型中推断出来:

var intsA = [Int](repeating: 2, count: 2)var intsB = [Int](repeating: 1, count: 3)var intsC = intsA + intsBfor item in intsC { print}

以上程序执行输出结果为:

22111
find . "(" -name ".m" -or -name ".mm" -or -name ".cpp" -or -name ".h" -or -name ".rss" -or -name ".xib" ")" -print | xargs wc -l

6.count属性

我们可以使用count属性来计算数组元素个数:

var intsA = [Int](count: 2, repeatedValue: 2)var intsB = [Int](count: 3, repeatedValue: 1)var intsC = intsA + intsBprint("intsA元素个数为(intsA.count)")print("intsB元素个数为(intsB.count)")print("intsC元素个数为(intsC.count)")

以上程序执行输出结果为:

intsA元素个数为 2intsB元素个数为 3intsC元素个数为 5

在宏里面, ##的作用:连接2个标识符

7.isEmpty属性

我们可以通过只读属性isEmpty来判断数组是否为空,返回布尔值:

var intsA = [Int](count: 2, repeatedValue: 2)var intsB = [Int](count: 3, repeatedValue: 1)var intsC = [Int]()print("intsA.isEmpty = (intsA,isEmpty)")print("intsB.isEmpty = (intsB.isEmpty)")print("intsC.isEmpty = (intsC.isEmpty)")

以上程序的执行结果为:

intsA.isEmpty = falseintsB.isEmpty = falseintsC.isEmpty = true

Swift字典用来存储无序的相同类型数据的集合,Swift字典会强制检测元素的类型,如果类型不同则会报错。Swift字典每个值都关联唯一的键,键作为字典中的这个值数据的标识符。和数组中数据项不同,字典中的数据项并没有具体顺序。我们在需要通过标识符访问数据的时候使用字典,这种方法很大程度上和我们在现实世界中使用字典查字义的方法一样。Swift字典的key没有类型显示可以是整型或字符串,但必须是唯一的。如果创建一个字典,并赋值给一个变量,则创建的字典就是可以修改的。这意味着在创建字典后,可以通过添加、删除、修改的方式改变字典里的项目。如果一个字典赋值给常量,字典就不可以修改,并且字典的大小和内容都不可以修改。

#define method - load##name {}method //- loadabc {} method //- loadddd {} method //- loadttt {} method 

1.创建字典

我们可以使用以下语法来创建一个特定类型的空字典:

var someDict = [KeyType: valueType]()

以下是创建一个空字典,键的类型为Int,值的类型为String的简单语法:

var someDict = [Int: String]()

以下为创建一个字典的实例:

var someDict : [Int : String] = [1 : "One", 2 : "Two", 3 : "Three"]

在宏里面, #的作用:给右边的标识符加上双引号""

2.访问字典

我们可以根据字典的索引来访问数组的元素,语法如下:

var someVar = someDict[key]

我们可以通过以下实例来学习如何创建,初始化,访问字典:

var someDict : [Int : String] = [1 : "One", 2 : "Two", 3 : "Three"]var someVar = someDict[1]print("key = 1的值为")print("key = 2的值为(someDict[2])")print("key = 3的值为(someDict[3])")

以上程序执行输出结果为:

key = 1 的值为 Optionalkey = 2 的值为 Optionalkey = 3 的值为 Optional
#define test @#nametest // @"abc"

#pragma clang diagnostic push#pragma clang diagnostic ignored "-Wunused-variable" UIView *testView = [[UIView alloc] init];#pragma clang diagnostic pop

#pragma clang diagnostic push#pragma clang diagnostic ignored "-Wundeclared-selector" UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handleNavigationTransition:)]; // 错误实例,这样做会在点击时崩溃#pragma clang diagnostic pop

-fobjc-arc MRC-fno-objc-arc ARC

#if TARGET_IPHONE_SIMULATOR //模拟器#elif TARGET_OS_IPHONE //真机#endif

3.修改字典

我们可以使用updateValue增加或更新字典的内容。如果key不存在,则添加值,如果存在则修改key对应的值。updateValue(_:forkey:)方法返回Optional值,实例如下:

var someDict : [Int : String] = [1 : "One", 2 : "Two", 3 : "Three"]var oldVal = someDict.updateValue("One新的值", forKey: 1)var someVar = someDict[1]print("key = 1 旧的值print("key = 1 的值为")print("key = 2 的值为(someDict[2])")print("key = 3 的值为(someDict[3])")

以上程序执行输出结果为:

key = 1 旧的值Optionalkey = 1 的值为Optionalkey = 2 的值为Optionalkey = 3 的值为Optional

你也可以通过指定的key来修改字典的值,如下图所示:

var someDict : [Int : String] = [1 : "One", 2 : "Two", 3 : "Three"]var oldVal = someDict[1]someDict[1] = "One 新的值"var someVar = someDict[1]print("key = 1 旧的值print("key = 1 的值为 ")print("key = 2 的值为(someDict[2])")print("key = 3 的值为(someDict[3])")

以上程序执行输出结果为:

key = 1 旧的值 Optionalkey = 1 的值为 Optional("One 新的值")key = 2 的值为 Optionalkey = 3 的值为 Optional

举例,比如我们希望button点击的时候,可以传递更多的属性。除开继承自UIButton添加属性外,还有这种方法。

4.移除Key-Value对

我们可以使用removeValueForKey()方法来移除字典key-value对。如果key存在该方法返回移除的值,如果不存在返回nil。实例如下:

var someDict : [Int : String] = [1 : "One", 2 : "Two", 3 : "Three"] var removedValue = someDict.removeValue(forKey : 2)print( "key = 1 的值为 (someDict[1])" )print( "key = 2 的值为 (someDict[2])" )print( "key = 3 的值为 (someDict[3])" )

以上程序执行结果为:

key = 1 的值为 Optionalkey = 2 的值为 nilkey = 3 的值为 Optional

你也可以通过指定键的值为 nil 来移除 key-value对。实例如下:

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]someDict[2] = nilprint( "key = 1 的值为 (someDict[1])" )print( "key = 2 的值为 (someDict[2])" )print( "key = 3 的值为 (someDict[3])" )

以上程序执行输出结果:

key = 1 的值为 Optionalkey = 2 的值为 nilkey = 3 的值为 Optional

版权声明:本文由ag真人发布于专项工作,转载请注明出处:ag真人iOS开发的一些Tips,各种demo链接汇总