开发中对storyBoard的误解以及手码约束

1.现在有的公司在开发中可能还存在对storyboard的误解

说storyboard是XML的,性能不好,且不适合团队开发。

稍微一动就会改变storyboard的状态,在公司团队开发中造成了很大的困扰,因此很多公司拒绝使用storyboard。

其实,以上的bug是XCode4.x以前的,Xcode5.0以后,这些bug就已被修复了;

如果真的不小心改变了storyboard中控件的位置,可以使用git恢复。

还有一点,在项目中只要一编译就会把storyboard转化为二进制文件,在执行的过程中并不会很慢,所以性能上来说不会差很多

测试:我们可以显示boundle内容,找到storyboard,此时已经不能用XCode打开了,可以显示包内容,在终端输入以下命令

终端命令:cd Main.storyboardc   

ls

xxd 要查看的文件.nib             可以发现其已经是一个二进制数据,打成了一个包 


2.那我们在开发中怎么选择呢?

使用 xib 和 storyboard 的优点:

1.可以迅速的完成界面的搭建工作,比手码更加快捷,可以很快的看见效果,利于调试

2.对新人来说这跟容易理清各个模块间的跳转关系

纯手码的优点:

1.便于统一管理,可以很快的修改统一样式

2.“代码是王道”,可以做到storyboard做不到的事情

例如:把一个按钮加进一个UILabel中,storyboard就做不到,只能是同级关系;

  但是纯手码就可以,因为UILabel继承自UIView,继承自UIView的控件都可以容纳子控件

在开发中我们可以根据公司的实际需求和个人爱好来选择。但是身为一个IOS开发者,不论是手码还是storyboard都应该熟练的使用。


3.约束

1.VFL的使用

"|"表示superview. 
    |-间距-[view1对象名]-(>=20)-[view2对象名]
    不写H/V就表示横向,间距可以写固定值也可写>/<。
    形象化的理解,"|"是用来确定view上、下、左、右关系的。
    想要确定从上到下的关系,就加V:|。那么这个vfl字串就可以描述从上到下的view们的关系。

[objc]  view plain copy
  1. //1 创建控件  
  2. UIView *blueView = [[UIView alloc] init];  
  3. [self.view addSubview:blueView];  
  4. blueView.backgroundColor = [UIColor blueColor];  
  5.   
  6. UIView *redView = [[UIView alloc] init];  
  7. [self.view addSubview:redView];  
  8. redView.backgroundColor = [UIColor redColor];  
  9. //2 禁用Autoresizing  
  10. redView.translatesAutoresizingMaskIntoConstraints = NO;  
  11. blueView.translatesAutoresizingMaskIntoConstraints = NO;  
  12.   
  13. //3 创建约束  
  14. //blueView的约束  
  15. NSArray *blueViewHCon = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-pd1-[bView]-pd2-|" options:0 metrics:@{@"pd1":@20,@"pd2":@20} views:@{@"bView":blueView}];  
  16.   
  17. NSArray *blueViewVCon = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[bView(50)]-20-[rView(==bView)]" options:NSLayoutFormatAlignAllTrailing metrics:nil views:@{@"bView":blueView,@"rView":redView}];  
  18.   
  19. NSLayoutConstraint *redViewWidth = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeWidth multiplier:0.5 constant:0];  
  20.   
  21.   
  22. //4 添加约束  
  23. [self.view addConstraints:blueViewHCon];  
  24. [self.view addConstraints:blueViewVCon];  
  25. [self.view addConstraint:redViewWidth];  


2.手码约束

[objc]  view plain copy
  1. // 添加关闭按钮  
  2.     UIButton *closeBtn = [UIButton buttonWithType:UIButtonTypeCustom];  
  3.     [closeBtn setBackgroundImage:[UIImage imageNamed:@"alphaClose"] forState:UIControlStateNormal];  
  4.     [img addSubview:closeBtn];  
  5.       
  6.     // 添加约束注意点  
  7.     /* 
  8.      1.关闭autoreszing 
  9.      2.添加到父控件中 
  10.      3.创建约束 
  11.      4.添加约束 
  12.      */  
  13.     closeBtn.translatesAutoresizingMaskIntoConstraints = NO;  
  14.     // top  
  15.     NSLayoutConstraint *topC = [NSLayoutConstraint constraintWithItem:closeBtn attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:closeBtn.superview attribute:NSLayoutAttributeTop multiplier:1.0 constant:0];  
  16.     // right  
  17.     NSLayoutConstraint *rightC = [NSLayoutConstraint constraintWithItem:closeBtn attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:closeBtn.superview attribute:NSLayoutAttributeRight multiplier:1.0 constant:0];  
  18.     // width  
  19.     NSLayoutConstraint *withC = [NSLayoutConstraint constraintWithItem:closeBtn attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:20];  
  20.     // height  
  21.     NSLayoutConstraint *heightC = [NSLayoutConstraint constraintWithItem:closeBtn attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:20];  
  22.       
  23.     // 添加约束  
  24.     [img addConstraints:@[topC,rightC]];  
  25.     [closeBtn addConstraints:@[withC,heightC]];  
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
未来社区的建设背景和需求分析指出,随着智能经济、大数据、人工智能、物联网、区块链、云计算等技术的发展,社区服务正朝着数字化、智能化转型。社区服务渠道由分散向统一融合转变,服务内容由通用庞杂向个性化、服务导向转变。未来社区将构建数字化生态,实现数据在线、组织在线、服务在线、产品智能和决策智能,赋能企业创新,同时注重人才培养和科研平台建设。 规划设计方面,未来社区将基于居民需求,打造以服务为心的社区管理模式。通过统一的服务平台和应用,实现服务内容的整合和优化,提供灵活多样的服务方式,如推送式、订阅式、热点式等。社区将构建数据与应用的良性循环,提高服务效率,同时注重生态优美、绿色低碳、社会和谐,以实现幸福民生和产业发展。 建设运营上,未来社区强调科学规划、以人为本,创新引领、重点突破,统筹推进、整体提升。通过实施院落+社团自治工程,转变政府职能,深化社区自治法制化、信息化,解决社区治理的重点问题。目标是培养有活力的社会组织,提高社区居民参与度和满意度,实现社区治理服务的制度机制创新。 未来社区的数字化解决方案包括信息发布系统、服务系统和管理系统。信息发布系统涵盖公共服务类和社会化服务类信息,提供政策宣传、家政服务、健康医疗咨询等功能。服务系统功能需求包括办事指南、公共服务、社区工作参与互动等,旨在提高社区服务能力。管理系统功能需求则涉及院落管理、社团管理、社工队伍管理等,以实现社区治理的现代化。 最后,未来社区建设注重整合政府、社会组织、企业等多方资源,以提高社区服务的效率和质量。通过建立社区管理服务综合信息平台,提供社区公共服务、社区社会组织管理服务和社区便民服务,实现管理精简、高效、透明,服务快速、便捷。同时,通过培育和发展社区协会、社团等组织,激发社会化组织活力,为居民提供综合性的咨询和服务,促进社区的和谐发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值