close
当前位置: 物联网在线 > 技术文库 > ios >

最好用的 iOS 快速布局UI库

众所周知,UI在一个App中所占的比重是很大的,如果能快速的布局UI,则会大大的提高App整体的开发效率,NerdyUI正是基于这个理由创建的。

NerdyUI使用非常紧凑的链式语法,提供一些常用但系统控件又缺失的功能,更为简便的约束创建方式和更好理解的布局系统,势必能大大减少您的代码量和开发时间。

快速创建 NSString, UIFont, UIColor, UIImage 和常用的 structs

你可以用 Str() 来转换大部分类型到NSString。同理,你可以用 Log() 来打印大部分的变量。

Str(100); //@"100" Str(3.14); //@"3.14" Str(@0.618); //@"0.618" Str(view.frame); //@"{{0, 0}, {100, 100}}" Str(view.center); //@"50, 50}" Str(_cmd); //@"viewDidLoad" Str(NSString.class); //@"NSString" Str("c string"); //@"c string" Str(@"1 + 1 = %d", 1 + 1); //@"1 + 1 = 2 Log(100); Log(3.14); Log(@0.618); Log(view.frame); ... Log(@"1 + 1 = %d", 1 + 1); //拼接字符串 @"1".a(@"2").a(3).a(nil).a(4.0f).a(@5).a(@"%d", 6); //@"123456"

你可以用 AttStr() 来创建NSAttributedString。

AttStr(@"hello, 101").match(@"[0-9]+").underline; AttStr(@"A smile ", Img(@"smile"), @" !!"); //attributedString with image attachment

你可以用 Fnt() 来创建UIFont。

Fnt(15); //[UIFont systemFontOfSize:15] Fnt(@15); //[UIFont boldSystemFontOfSize:15] Fnt(@"body"); //UIFontTextStyleBody Fnt(@"Helvetica,15"); //helvetica font with size 15

你可以用 Color() 来创建UIColor。

Color(@"red"); //[UIColor redColor] Color(@"green,0.5"); //green color with 0.5 alpha Color(@"0,0,255"); //blue color Color(@"#0000FF"); //blue color Color(@"#00F,0.5"); //blue color with 0.5 alpha Color(@"random"); //random color

你可以用 Img() 来创建UIImage。

Img(@"imageName"); //[UIImage imageNamed:@"imageName"] Img(@"#imageName"); //加上#号会返回一个可拉伸的图片 Img(@"red"); //返回一个 1x1 大小的红色图片

你可以用 XY(), WH(), XYWH(), Range(), Insets() 来创建CGPoint, CGSize, CGRect, NSRange, UIEdgeInsets。

CGPoint p = XY(20, 20); CGSize s = WH(50, 50); CGRect f1 = XYWH(20, 20, 50, 50); CGRect f2 = XYWH(f1.origin, f1.size); CGRect f3 = XYWH(f2.origin, 50, 50); CGRect f4 = XYWH(20, 20, f3.size); NSRange r = Range(10, 20); UIEdgeInsets i1 = Insets(10); //{10, 10, 10, 10} UIEdgeInsets i2 = Insets(10, 20); //{10, 20, 10, 20} UIEdgeInsets i3 = Insets(10, 20, 30); //{10, 20, 30, 20} UIEdgeInsets i4 = Insets(10, 20, 30, 40); //{10, 20, 30, 40}

使用这些宏可以简化一些常见类型的创建过程,更重要的是你可以用同样的方式来设置视图的属性值,稍后你就会明白是什么意思。

快速访问frame属性和屏幕大小 someView.x = 10; someView.y = someView.x; someView.xy = XY(10, 10); someView.w = 50; //width someView.h = someView.w; //height someView.wh = WH(50, 50); someView.frame = XYWH(10, 10, 50, 50); someView.cx = 25; someView.cy = someView.cx; someView.center = XY(25, 25); someView.maxX = 60; someView.maxY = someView.maxX; someView.maxXY = XY(60, 60); //Screen只是 [UIScreen mainScreen] 的宏定义 someView.wh = WH(Screen.width, Screen.height);

我猜大部分人都有类似的扩展吧

快速的创建UI控件

NerdyUI 使用链式语法来快速的创建和设置 UI 控件。

UIView *view1 = View.xywh(20, 30, 50, 50).bgColor(@"red").opacity(0.7).border(3, @"3d3d3d"); UIView *view2 = View.xy(80, 30).wh(view1.wh).bgColor(@"blue,0.7").cornerRadius(25).shadow(0.8).onClick(^{ Log(@"view2"); });

最好用的 iOS 快速布局UI库

view

UIImageView *moose = ImageView.img(@"moose").x(20).y(100).shadow(0.6, 2, -3, -1); UILabel *quiz = Label.str(@"%d+%d=?", 1, 1).fnt(@17).color(@"66,66,66").fitSize.x(moose.maxX + 10).cy(moose.cy);

moose

//如果后续不需要再访问 title 的属性,定义为 id 可以减少一些代码量 id title = AttStr(@"TAP ME").fnt(15).underline.range(0, 3).fnt(@18).color(@"random"); UIButton *button1 = Button.str(title).insets(5, 10).fitSize.border(1).xy(20, 150).onClick(^(UIButton *btn) { //Exp() 可在任何位置执行任意代码 quiz.text = Str(@"%d+%d=%d", 1, 1, Exp(btn.tag += 1)); [quiz sizeToFit]; }); UIButton *button2 = Button.str(@"HAT").highColor(@"brown").img(@"hat").gap(8); button2.xywh(button1.frame).x(button1.maxX + 10).cornerRadius(5).bgImg(@"blue,0.5").highBgImg(@"orange"); //.highBgImg() 可以用来设置 UIButton 的 highlightedBackgroundColor,这是一个非常有用的功能

最好用的 iOS 快速布局UI库

button

id pinField = TextField.x(button1.x).y(button1.maxY + 15).wh(170, 30).onChange(^(NSString *text) { //这里的 self 已经自动做了 weakify 处理, 不用担心会有引用循环 [(id)[self.view viewWithTag:101] setText:text]; }).numberKeyboard.maxLength(4).hint(@"pin code").fnt(15).roundStyle; id textView = TextView.xywh(20, 240, 170, 100).border(1).insets(8).hint(@"placeholder").fnt([pinField font]).tg(101);

最好用的 iOS 快速布局UI库

input


(责任编辑:ioter)

用户喜欢...

WCDB:微信开源的高效、完整、易用的移动数据库框架

WCDB是一个高效、完整、易用的移动数据库框架,基于 SQLCipher ,支持iOS, macOS和Android。 WCDB for iOS/macOS 基本功能 WINQ (WCDB语言集成查询): 通过WINQ,开发者无须为了拼接SQL的字符串而写一大坨胶...


快速入门指南:使用 UIViewPropertyAnimator 做动画

iOS 10 带来了一堆非常有意思的新特性,例如 UIViewPropertyAnimator 。这是一个能够改善动画处理方式的新类。 它彻底改变了我们所习惯的工作流,为动画逻辑添加了一个更为精细的控制手段。...


iOS面试中,如何优雅的回答Block导致循环引用的问题

说到循环引用问题,最最最常遇到的,不是在项目中,而是在面试中。如果面试官问你开发中是否遇到过retain cycle,你如果说没遇到过,估计已经很难跟面试官继续友好的沟通下去了。 但是...


iOS开源 - YJFavorEmitter:好用的点赞粒子发射器

English YJFavorEmitter is a favor cells emitter which is very nice and easy to use. Installation Add pod 'YJFavorEmitter' to your Podfile. Run pod install or pod update. import . Usage init emitter/** _emitter = [YJFavorEmitter emitterWithFrame:CGR...


iOS开源 - AREK:干净、易用的 iOS 权限封装库

AREK is a clean and easy to use wrapper over any kind of iOS permission. show a native popup used to avoid to burn the possibility to ask to iOS the real permission show a popup to invite the user to re-enable the permission if it has been denied m...


iOS开源:WHC_ScanUnreferenceImageTool - 扫描 iOS 和 Android 项目里没有使用的图片开源工具

WHC_ScanUnreferenceImageTool Version: 1.0.4 简介 高效 : Mac扫描项目图片工具(扫描项目里引用但没有使用的图片) 好处 : 删除没有引用的图片以减小打包体积 强大 : 支持iOS 和 Android项目 咨询 : 712641411...


开源工具:WHC_Scan - iOS/Android 项目扫描没使用的类开源工具

WHC_Scan v1.0.0 简介 应用 : Mac工具(扫描项目里没有使用的类) 高效 : 支持自定义设置扫描线程数量(提高扫描分析效率) 好处 : 删除项目没有使用的类增加项目结构清晰度利于后期升级维护并减小...


iOS原生语音识别使用的正确姿势

语音识别技术这几年在移动App上的应用越来越广,各种第三方语音识别SDK也是层出不穷,例如科大讯飞、百度语音等,同时引入语音识别技术也是一个提高App逼格的好方法:grin:。所以今年的...