UIStackView 对UIView视图管理
来源:互联网 发布:知乎ipad客户端没法装 编辑:程序博客网 时间:2024/05/22 10:27
UIStackView 对UIView子视图进行管理 ,对原片进行缩放
首先,建立一些视图,将视图放在数组中:
NSMutableArray *array = [[NSMutableArray alloc] init]; for (int i = 0; i < 4; i ++) { UIView *view = [[UIView alloc] init]; view.backgroundColor = [UIColor colorWithRed:arc4random()%255/255.0 green:arc4random()%255/255.0 blue:arc4random()%255/255.0 alpha:1]; [array addObject:view]; } // 初始化方法,通过数组传入被管理的视图 self.stackView = [[UIStackView alloc] initWithArrangedSubviews:array]; [self.view addSubview:self.stackView]; self.stackView.frame = CGRectMake(0, 0, self.view.bounds.size.width, 500); self.stackView.axis = UILayoutConstraintAxisVertical; // 垂直方向 /* typedef NS_ENUM(NSInteger, UILayoutConstraintAxis) { UILayoutConstraintAxisHorizontal = 0, 水平布局 UILayoutConstraintAxisVertical = 1 竖直布局 }; */ self.stackView.distribution = UIStackViewDistributionFillEqually; // 排列方式 /* typedef NS_ENUM(NSInteger, UIStackViewDistribution) { UIStackViewDistributionFill = 0, // 充满,当只有一个控件时可以使用 UIStackViewDistributionFillEqually, // 平分充满,每个控件占据相同尺寸排列充满 UIStackViewDistributionFillProportionally, // 会优先按照约束的尺寸进行排列,如果没有充满,会拉伸最后一个排列的控件充满 UIStackViewDistributionEqualSpacing, // 等间距排列 UIStackViewDistributionEqualCentering, // 中心距离相等 } NS_ENUM_AVAILABLE_IOS(9_0); */ self.stackView.alignment = UIStackViewAlignmentFill; // 对齐模式 /* typedef NS_ENUM(NSInteger, UIStackViewAlignment) { UIStackViewAlignmentFill, // 水平布局时为高度充满,竖直布局时为宽度充满 UIStackViewAlignmentLeading, // 前边对齐 UIStackViewAlignmentTop = UIStackViewAlignmentLeading, // 顶部对齐 UIStackViewAlignmentFirstBaseline, // 第一个控件文字的基线对齐 水平布局有效 UIStackViewAlignmentCenter, // 中心对齐 UIStackViewAlignmentTrailing, // 后边对齐 UIStackViewAlignmentBottom = UIStackViewAlignmentTrailing, // 底部对齐 UIStackViewAlignmentLastBaseline, // 基线对齐,水平布局有效 } NS_ENUM_AVAILABLE_IOS(9_0); */ self.stackView.spacing = 5; // 设置最小间距 self.stackView.baselineRelativeArrangement = YES; // 设置布局是是否参照基线 self.stackView.layoutMarginsRelativeArrangement = NO; // 设置布局时是否以控件的LayoutMargins为标准,默认为NO,是以控件的bounds为标准 UIButton *button2 = [[UIButton alloc] initWithFrame:CGRectMake(50, self.view.bounds.size.height - 50, 50, 50)]; [button2 addTarget:self action:@selector(removeView) forControlEvents:(UIControlEventTouchUpInside)]; [button2 setTitle:@"删除" forState:(UIControlStateNormal)]; button2.titleLabel.font = [UIFont systemFontOfSize:25]; [button2 setTitleColor:[UIColor blueColor] forState:(UIControlStateNormal)]; [self.view addSubview:button2]; UIButton *button1 = [[UIButton alloc] initWithFrame:CGRectMake(150, self.view.bounds.size.height - 50, 50, 50)]; [button1 addTarget:self action:@selector(addView) forControlEvents:(UIControlEventTouchUpInside)]; [button1 setTitle:@"添加" forState:(UIControlStateNormal)]; button1.titleLabel.font = [UIFont systemFontOfSize:25]; [button1 setTitleColor:[UIColor blueColor] forState:(UIControlStateNormal)]; [self.view addSubview:button1]; UIButton *button3 = [[UIButton alloc] initWithFrame:CGRectMake(250, self.view.bounds.size.height - 50, 50, 50)]; [button3 addTarget:self action:@selector(insertView) forControlEvents:(UIControlEventTouchUpInside)]; [button3 setTitle:@"插入" forState:(UIControlStateNormal)]; button3.titleLabel.font = [UIFont systemFontOfSize:25]; [button3 setTitleColor:[UIColor blueColor] forState:(UIControlStateNormal)]; [self.view addSubview:button3]; //响应事件- (void)addView{ UIView *newView = [[UIView alloc] init]; newView.backgroundColor = [UIColor colorWithRed:arc4random()%255/255.0 green:arc4random()%255/255.0 blue:arc4random()%255/255.0 alpha:1]; [self.stackView addArrangedSubview:newView]; // 在添加的时候会有动画效果 [UIView animateWithDuration:1 animations:^{ [self.stackView layoutIfNeeded]; }];}- (void)removeView{ UIView *view = [[self.stackView arrangedSubviews] lastObject]; // 获取被管理的所有视图中的最后一个 [self.stackView removeArrangedSubview:view]; // 移除一个view [UIView animateWithDuration:1 animations:^{ [self.stackView layoutIfNeeded]; }];}- (void)insertView{ UIView *newView = [[UIView alloc] init]; newView.backgroundColor = [UIColor colorWithRed:arc4random()%255/255.0 green:arc4random()%255/255.0 blue:arc4random()%255/255.0 alpha:1]; NSArray *array = [self.stackView arrangedSubviews]; if (array.count > 2) { [self.stackView insertArrangedSubview:newView atIndex:2]; // 插入一个视图 [UIView animateWithDuration:1 animations:^{ [self.stackView layoutIfNeeded]; }]; }}
0 0
- UIStackView 对UIView视图管理
- UIView管理子视图
- UIView如何管理它的子视图
- UIView如何管理它的子视图
- UIView层次管理和视图切换
- UIView如何管理它的子视图
- UIView如何管理它的子视图
- UIView如何管理它的子视图
- UIView如何管理它的子视图
- 视图UIView
- UIView视图
- UIStackView
- UIStackView
- UIStackView
- UIStackView
- iphone学习笔记-UIView如何管理它的子视图
- iphone学习笔记-UIView如何管理它的子视图
- UI -- UIView如何管理它的子视图
- Spring MVC表单标签
- 机器学习面试材料
- 安卓开源数据库ORM框架的使用
- OpenGL中的坐标系和变换
- 看韦东山视频移植u-boot到mini2440支持烧写yaffs
- UIStackView 对UIView视图管理
- Caffe Solver
- 基于Deep Learning 的视频识别技术
- Android使用HttpClient时出现错误:java.lang.NoSuchFieldError: No static field INSTANCE
- Fiddler抓取HttpClient数据抓取不到的问题
- C#动态库调用方法
- SpringMVC学习笔记
- PAT (Basic Level) Practise-1006
- Laravel_Elixir_gulp任务利器安装