开发细节(二)

1. 利用Auto Layout整体排列控件

下面的代码演示了一个控件如何在其父容器中垂直水平居中:

UIView *box = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 200, 150)];
box.backgroundColor = [UIColor grayColor];
[self.view addSubview:box];

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setTitle:@"a button" forState:UIControlStateNormal];
[button sizeToFit];
button.translatesAutoresizingMaskIntoConstraints = NO;
[box addSubview:button];

NSMutableArray *array = [[NSMutableArray alloc] init];

[array addObjectsFromArray:[NSLayoutConstraint
                            constraintsWithVisualFormat:@"V:[box]-(<=1)-[button]"
                            options:NSLayoutFormatAlignAllCenterX
                            metrics:nil
                            views:NSDictionaryOfVariableBindings(box,button)]];

[array addObjectsFromArray:[NSLayoutConstraint
                            constraintsWithVisualFormat:@"H:[box]-(<=1)-[button]"
                            options:NSLayoutFormatAlignAllCenterY
                            metrics:nil
                            views:NSDictionaryOfVariableBindings(box,button)]];

[box addConstraints:array];

下面的代码演示了多个控件其父容器中水平左对齐,垂直居中:

UIView *box = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 200, 150)];
box.backgroundColor = [UIColor grayColor];
[self.view addSubview:box];

UILabel *label = [[UILabel alloc] init];
label.text = @"a label";
[label sizeToFit];
label.backgroundColor = [UIColor redColor];
label.translatesAutoresizingMaskIntoConstraints = NO;
[box addSubview:label];

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setTitle:@"a button" forState:UIControlStateNormal];
[button sizeToFit];
button.translatesAutoresizingMaskIntoConstraints = NO;
[box addSubview:button];

NSMutableArray *array = [[NSMutableArray alloc] init];

[array addObjectsFromArray:[NSLayoutConstraint
                            constraintsWithVisualFormat:@"V:|-[button]-|"
                            options:NSLayoutFormatAlignAllLeft
                            metrics:nil
                            views:NSDictionaryOfVariableBindings(button)]];

[array addObjectsFromArray:[NSLayoutConstraint
                            constraintsWithVisualFormat:@"|-15-[myLabel]-5-[myButton]"
                            options:NSLayoutFormatAlignAllCenterY
                            metrics:nil
                            views:@{@"myLabel":label, @"myButton":button}]];

[box addConstraints:array];
时间: 2024-08-01 23:54:06

开发细节(二)的相关文章

学iOS开发(二)——实现一款App之编写自定义类

今天学iOS开发(二)--实现一款App之编写自定义类 当开发iOS应用程序时,你会发现在许多场景下,你需要编写自己的自定义类.当你需要数据和自定义行为一起打包时,自定义类就很有用了.在一个自定义的类中,你可以为存储.操纵和显示数据定义你自己的行为. 例如,考虑iOS Clock app中的全球时钟标签(World Clock tab).这个表视图中的单元格需要显示比标准表视图单元格更多的内容.这是一个不错的机会实现一个扩展UITableViewCell行为的子类,从而在给定的表视图单元格中显示

QT开发(二十二)——QMainWindow主窗口

QT开发(二十二)--QMainWindow主窗口 一.主窗口简介 应用程序中的主窗口是与用户进行长时间交互的顶层窗口,提供了应用程序的大部分功能,通常是应用程序启动后的第一个窗口,应用程序一般由一个主窗口和多个对话框组成. QT中直接支持主窗口,QMainWindow是QT中主窗口的基类,是继承于QWidget类的容器型组件. QMainWindow内部封装了菜单栏.工具栏.中心组件.停靠组件.状态栏等. QMainWindow内置了布局管理器,基本的组件布局如下: 二.菜单栏 QT中提供了预

QT开发(二十)——QT对话框

QT开发(二十)--QT对话框 一.对话框简介 对话框是与用户进行简短交互的顶层窗口 QDialog是QT中所有对话框窗口的基类,QDialog继承于QWidget,是一种容器型的组件,是定制了窗口样式的特殊QWidget. QDialog作为一种专用的交互窗口,不能作为子部件嵌入其他容器中. 二.对话框类型 对话框类型分为模态对话框和非模态对话框. 1.模态对话框 模态对话框显示后无法与父窗口进行交互,是一种阻塞式的对话框,使用QDialog::exec()函数调用. 模态对话框一般在栈上创建

QT开发(二十七)——QT常用类(一)

QT开发(二十七)--QT常用类(一) 一.QString 1.QString简介 QString提供了Unicode编码的字符串,使用隐式共享技术来节省内存和不必要的数据拷贝,不必考虑跨平台的兼容性. QString类成员函数中除了 ascii().latin1().utf8().local8Bit()函数,其他所有的函数都是可重入的. 2.QString成员函数 QString::QString ( const QChar * unicode, int size ) QString::QSt

QT开发(二十一)——QT布局管理器

QT开发(二十一)--QT布局管理器 一.布局管理器简介 QT中使用绝对定位的布局方式无法自适应窗口的变化. QT中提供了对界面组件进行布局管理的类,用于对界面组件进行管理,能够自动排列窗口中的界面组件,窗口大小变化后自动更新界面组件的大小. QLayout是QT中布局管理器的抽象基类,通过对QLayout的继承,实现了功能各异且互补的布局管理器. 布局管理器不是界面组件,而是界面组件的定位策略. 任意容器类型的组件都可以指定布局管理器. 同一个布局管理器管理中的组件拥有相同的父组件,在设置布局

微信公众平台搭建与开发(二)开发模式的搭建和关键词回复

在第一部分介绍了编辑模式,但是编辑模式有较大局限性,下面主要开始介绍开发模式,这一部门先简单介绍下开发模式的环境搭建和关键词回复. 开发模式首先要有一个虚拟主机,本人使用的是新浪开发者平台的虚拟主机,使用云豆计算流量,若成为新浪开发者用户基本上就可以免费使用了,本人注册用户所赠送的云豆不知道能用多久.当然国内比较大还有就是百度开发者平台,注册后发现部署还没有新浪的方便,并且在BAE3.0以后好像也是要收费的.有兴趣的朋友可以研究下google的开发者平台,不知道是否要收费. 在注册新浪开发者平台

iOS开发——项目实战Swift篇&amp;swift 2.0项目开发总结二(开发常用)

swift 2.0项目开发总结二(开发常用) 一:相册中选择相片到App指定位置 随 着相机像素的提高,实际用户选择的图片都是很大的,有的高达5.6M,如果直接使用用户选着的图片,非常消耗内存,并且也用不到这么高像素的图片,可以当 用户选着好图片后,在UIImagePickerController对应的代理方法中,先将图片进行重新绘制为需要的大小,在设置给iconView 1 /// MARK: 摄像机和相册的操作和代理方法 2 extension MeViewController: UIIma

php后台开发(二)Laravel框架

php后台开发(二)Laravel框架 为了提高后台的开发效率,往往需要选择一套适合自己的开发框架,因此,选择了功能比较完善的Laravel框架,仔细学来,感觉和Python语言的框架Django非常类似. Laravel框架 Laravel是一套web应用开发框架,它具有富于表达性且简洁的语法,并提供了验证(authentication).路由(routing).session和缓存(caching)等开发过程中经常用到的工具或功能. 框架安装 安装composer http://docs.p

密西西比河谷州立大学:Android应用程序开发(二)

第二讲 Hello World 密西西比河谷州立大学:Android应用程序开发(二),码迷,mamicode.com