标签:接受 layer oms interval exchange ide 管理所 商品 视图
// 实例化 view 对象,并设置 view 大小
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(10, 20, 200, 100)];
// 将 view 加到 window 上显示出来
[self.view addSubview:view];
// 设置 frame
/*
frame:控件矩形框在父控件中的位置和尺寸,以父控件的左上角为坐标原点
*/
view.frame = CGRectMake(10, 20, 200, 100);
// 设置 bounds
/*
bounds:控件矩形框的位置和尺寸,以自己左上角为坐标原点,所以 bounds 的 x、y 一般为 0
*/
view.bounds = CGRectMake(0, 0, 200, 100);
// 设置中心位置
/*
控件中点的位置,以父控件的左上角为坐标原点
*/
view.center = self.view.center;
// 设置背景颜色
view.backgroundColor = [UIColor greenColor];
// 设置背景颜色半透明
view.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5];
// 设置视图透明度
/*
范围:0.0 ~ 1.0 ,0.0 透明,1.0 不透明(默认)
视图上的文字等内容的透明度也同时被改变
*/
view.alpha = 1.0;
// 设置 tag 值
/*
用于区分不同的 view ,所有继承 view 的类对象都可以设置 tag 值
*/
view.tag = 100;
// 设置用户交互属性
/*
YES:打开用户交互属性,NO:关闭用户交互属性
*/
view.userInteractionEnabled = YES;
// 设置圆脚边框
/*
cornerRadius:圆角半径
masksToBounds:子图层是否剪切图层边界,默认为 NO
*/
view.layer.cornerRadius = 20;
view.layer.masksToBounds = YES;
// 设置边框
/*
borderWidth:边框粗细
borderColor:边框颜色
*/
view.layer.borderWidth = 5;
view.layer.borderColor = [[UIColor blueColor] CGColor];
// 不允许子视图的范围超过父视图的范围
/*
不允许 view 的子视图的范围超过 view 的范围,在父视图上设置
*/
view.clipsToBounds = NO;
// 获得自己的所有子控件对象
/*
数组元素的顺序决定着子控件的显示层级顺序(下标越大的,越显示在上面)
*/
NSArray *subviews = self.view.subviews;
// 获得自己的父控件对象
UIView *superview = self.view.superview;
// 从父视图中移除
[view removeFromSuperview];
// 根据一个 tag 标识找出对应的控件
UIView *view = [self.view viewWithTag:100];
// 放到最上层
/*
将 view1 放到最上层,层次关系 view2.view3.view1
*/
[self.view bringSubviewToFront:view1];
// 放倒最下面
/*
将 view3 放倒最下面,层次关系 view3.view1.view2
*/
[self.view sendSubviewToBack:view3];
// 位置进行交换
/*
将 view1 和 view3 位置进行交换,层次关系 view3.view2.view1
*/
[self.view exchangeSubviewAtIndex:0 withSubviewAtIndex:2];
// 放在上面
/*
将 view1 放在 view3 上面,层次关系 view2.view3.view1
*/
[self.view insertSubview:view1 aboveSubview:view3];
// 放在下面
/*
将 view3 放在 view2 下面,层次关系 view1.view3.view2
*/
[self.view insertSubview:view3 belowSubview:view2];
// 放在 n 位置
/*
将 view1 放在1的位置,层次关系 view2.view1.view3
*/
[self.view insertSubview:view1 atIndex:1];
// 控件的形变属性
@property(nonatomic) CGAffineTransform transform;
// 旋转
/*
(CGFloat angle) 旋转 45 度,需要输入的参数为弧度,45/180 * M_PI,1 度 = PI/180 弧度
*/
self.testView.transform = CGAffineTransformMakeRotation(0.25 * M_PI);
[self.testView.layer setAffineTransform: CGAffineTransformMakeRotation(0.25 * M_PI)];
// 缩放
/*
(CGFloat sx, CGFloat sy) (1, 2) 宽度和高度的放大倍数
*/
self.testView.transform = CGAffineTransformMakeScale(1, 2);
[self.testView.layer setAffineTransform: CGAffineTransformMakeScale(1, 2)];
// 平移
/*
(CGFloat tx, CGFloat ty) (100, 100) 水平和垂直方向的移动距离
*/
self.testView.transform = CGAffineTransformMakeTranslation(100, 100);
[self.testView.layer setAffineTransform: CGAffineTransformMakeTranslation(100, 100)];
// 旋转 + 缩放
CGAffineTransform rotationTransform = CGAffineTransformMakeRotation(0.25 * M_PI);
self.testView.transform = CGAffineTransformScale(rotationTransform, 2, 2);
// 旋转 + 平移
CGAffineTransform rotationTransform = CGAffineTransformMakeRotation(0.25 * M_PI);
self.testView.transform = CGAffineTransformTranslate(rotationTransform, 200, 100);
// 缩放 + 平移
CGAffineTransform scaleTransform = CGAffineTransformMakeScale(2, 2);
self.testView.transform = CGAffineTransformTranslate(scaleTransform, 100, 100);
// 旋转 + 缩放 + 平移
CGAffineTransform rotationTransform = CGAffineTransformMakeRotation(0.25 * M_PI);
CGAffineTransform rotationScaleTransform = CGAffineTransformScale(rotationTransform, 2, 2);
self.testView.transform = CGAffineTransformTranslate(rotationScaleTransform, 200, 100);
// 连续旋转
self.testView.transform = CGAffineTransformRotate(self.testView.transform, 0.25 * M_PI);
// 连续缩放
self.testView.transform = CGAffineTransformScale(self.testView.transform, 2, 2);
// 连续平移
self.testView.transform = CGAffineTransformTranslate(self.testView.transform, 100, 100);
// 还原所有形变
self.testView.transform = CGAffineTransformIdentity;
[self.testView.layer setAffineTransform: CGAffineTransformIdentity];
// 父视图设置
/*
父视图允许子视图跟随
default is YES
*/
fatherView.autoresizesSubviews = YES;
// 子视图设置
/*
UIViewAutoresizingNone = 0, // 不跟随
UIViewAutoresizingFlexibleLeftMargin = 1 << 0, // 左边距 随父视图变化
UIViewAutoresizingFlexibleRightMargin = 1 << 2, // 右边距 随父视图变化
UIViewAutoresizingFlexibleTopMargin = 1 << 3, // 上边距 随父视图变化
UIViewAutoresizingFlexibleBottomMargin = 1 << 5 // 下边距 随父视图变化
UIViewAutoresizingFlexibleWidth = 1 << 1, // 宽度 随父视图变化
UIViewAutoresizingFlexibleHeight = 1 << 4, // 高度 随父视图变化
*/
sonView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
// 移动时间 2 秒
[UIView animateWithDuration:2 animations:^{
// 改变控件的位置和尺寸,改变后的位置或大小
view.frame = CGRectMake([UIScreen mainScreen].bounds.size.width - 60, 20, 50, 50);
} completion:^(BOOL finished) {
// 上一个设置完成后
[UIView animateWithDuration:2 animations:^{
// 改变控件的位置和尺寸,改变后的位置或大小
view.frame = CGRectMake(10, [UIScreen mainScreen].bounds.size.height - 110, 100, 100);
}];
}];
// 开始一个动画块
[UIView beginAnimations:nil context:nil];
// 动画设置
// 设置动画时间
/*
default = 0.2
*/
[UIView setAnimationDuration:2.0];
// 设置延时
/*
设置指定的时间后开始执行动画,default = 0.0
*/
[UIView setAnimationDelay:1.0];
// 设置动画开始执行时间
/*
default = now ([NSDate date])
*/
[UIView setAnimationStartDate:[NSDate dateWithTimeIntervalSinceNow:10]];
// 设置动画执行节奏
/*
UIViewAnimationCurveEaseInOut, // slow at beginning and end 开始喝结束慢速,默认
UIViewAnimationCurveEaseIn, // slow at beginning 开始慢速
UIViewAnimationCurveEaseOut, // slow at end 结束慢速
UIViewAnimationCurveLinear // 匀速
*/
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
// 设置重复次数
/*
default = 0.0. May be fractional
*/
[UIView setAnimationRepeatCount:CGFLOAT_MAX];
// 设置是否自动返回
/*
default = NO. used if repeat count is non-zero
*/
[UIView setAnimationRepeatAutoreverses:YES];
// 设置是否从当前状态开始动画
/*
default = NO
*/
[UIView setAnimationBeginsFromCurrentState:YES];
// 设置代理
/*
default = nil
*/
[UIView setAnimationDelegate:self];
// 设置动画开始时执行的代理方法,自定义方法
/*
default = NULL
*/
[UIView setAnimationWillStartSelector:@selector(startAnimations)];
// 设置动画结束时执行的代理方法,自定义方法
/*
default = NULL
*/
[UIView setAnimationDidStopSelector:@selector(stopAnimations)];
// 动画之行后效果
// 设置透明度,改变后的透明度
view.alpha = 0.0;
// 改变控件的位置和尺寸,改变后的位置或大小
view.center = CGPointMake(250, 250);
view.frame = CGRectMake(100, 180, 50, 50);
// 结束一个动画块
[UIView commitAnimations];
// Frame 转 NSValue
NSValue *freamValue = [NSValue valueWithCGRect:frame];
// NSValue 转 Frame
frame = [freamValue CGRectValue];
有时候希望在控件初始化时做一些初始化操作,比如添加子控件、设置基本属性,这时需要根据控件的创建方式,来选择在 initWithFrame:、initWithCoder:、awakeFromNib 的哪个方法中操作。
#import <UIKit/UIKit.h>
/// 数据模型
@class ShopModel;
@interface ShopView : UIView
/// 商品模型
@property (nonatomic, strong) ShopModel *shop;
/// 便利的构造方法
+ (instancetype)shopView;
@end
#import "ShopView.h"
#import "ShopModel.h"
@interface ShopView()
/// 图片控件
@property (nonatomic, strong) UIImageView *iconView;
/// 名字控件
@property (nonatomic, strong) UILabel *nameLabel;
@end
@implementation ShopView
/// 便利的构造方法
+ (instancetype)shopView {
return [[self alloc] init];
}
/**
* 控件初始化方法
* init 方法内部会自动调用 initWithFrame: 方法
*/
- (instancetype)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
self.backgroundColor = [UIColor orangeColor];
// 添加图片
UIImageView *iconView = [[UIImageView alloc] init];
iconView.backgroundColor = [UIColor blueColor];
[self addSubview:iconView];
self.iconView = iconView;
// 添加文字
UILabel *nameLabel = [[UILabel alloc] init];
nameLabel.font = [UIFont systemFontOfSize:11];
nameLabel.textAlignment = NSTextAlignmentCenter;
nameLabel.backgroundColor = [UIColor redColor];
[self addSubview:nameLabel];
self.nameLabel = nameLabel;
}
return self;
}
/**
* 布局子控件
* 这个方法专门用来布局子控件,一般在这里设置子控件的 frame
* 当控件本身的尺寸发生改变的时候,系统会自动调用这个方法
*/
- (void)layoutSubviews{
// 一定要调用 super 的 layoutSubviews
[super layoutSubviews];
CGFloat shopW = self.frame.size.width;
CGFloat shopH = self.frame.size.height;
self.iconView.frame = CGRectMake(0, 0, shopW, shopW);
self.nameLabel.frame = CGRectMake(0, shopW, shopW, shopH - shopW);
}
/// 数据模型 setter 方法
- (void)setShop:(ShopModel *)shop {
_shop = shop;
self.nameLabel.text = shop.name;
self.iconView.image = [UIImage imageNamed:shop.icon];
}
@end
#import "ShopView.h"
#import "ShopModel.h"
@interface ShopView()
/// 图片控件
@property (nonatomic, strong) UIImageView *iconView;
/// 名字控件
@property (nonatomic, strong) UILabel *nameLabel;
@end
@implementation ShopView
/// 便利的构造方法
+ (instancetype)shopView {
return [[self alloc] init];
}
/// 子控件懒加载方法(getter 方法)
- (UIImageView *)iconView {
if (_iconView == nil) {
UIImageView *iconView = [[UIImageView alloc] init];
iconView.backgroundColor = [UIColor blueColor];
[self addSubview:iconView];
_iconView = iconView;
}
return _iconView;
}
/// 子控件懒加载方法(getter 方法)
- (UILabel *)nameLabel {
if (_nameLabel == nil) {
UILabel *nameLabel = [[UILabel alloc] init];
nameLabel.font = [UIFont systemFontOfSize:11];
nameLabel.textAlignment = NSTextAlignmentCenter;
nameLabel.backgroundColor = [UIColor redColor];
[self addSubview:nameLabel];
_nameLabel = nameLabel;
}
return _nameLabel;
}
/**
* 布局子控件
* 这个方法专门用来布局子控件,一般在这里设置子控件的 frame
* 当控件本身的尺寸发生改变的时候,系统会自动调用这个方法
*/
- (void)layoutSubviews{
// 一定要调用 super 的 layoutSubviews
[super layoutSubviews];
CGFloat shopW = self.frame.size.width;
CGFloat shopH = self.frame.size.height;
self.iconView.frame = CGRectMake(0, 0, shopW, shopW);
self.nameLabel.frame = CGRectMake(0, shopW, shopW, shopH - shopW);
}
/// 数据模型 setter 方法
- (void)setShop:(ShopModel *)shop {
_shop = shop;
self.nameLabel.text = shop.name;
self.iconView.image = [UIImage imageNamed:shop.icon];
}
@end
// 设置列数
int cols = 3;
// 设置每一个单元格的尺寸
CGFloat shopW = 50;
CGFloat shopH = 70;
// 设置每一列和每一行之间的间距
/*
self.shopsView.frame.size.width 为父视图的宽度
*/
CGFloat colMargin = (self.shopsView.frame.size.width - cols * shopW) / (cols - 1);
CGFloat rowMargin = 10;
// 计算单元格的索引
/*
计算将要添加的单元格的索引
*/
NSUInteger index = self.shopsView.subviews.count;
// 计算单元格的 x 坐标值
NSUInteger col = index % cols;
CGFloat shopX = col * (shopW + colMargin);
// 计算单元格的 y 坐标值
NSUInteger row = index / cols;
CGFloat shopY = row * (shopH + rowMargin);
// 创建一个单元格视图控件
UIView *shopView = [[UIView alloc] init];
// 设置单元格的 frame
shopView.frame = CGRectMake(shopX, shopY, shopW, shopH);
// 设置单元格视图控件的内容
shopView.shop = self.shops[index];
// 将单元格添加到父视图上
[self.shopsView addSubview:shopView];
@property (weak, nonatomic) IBOutlet UIButton *myButton;
标签:接受 layer oms interval exchange ide 管理所 商品 视图
原文地址:https://www.cnblogs.com/CH520/p/9400603.html