首页 > 代码库 > UI笔记
UI笔记
一个视图可以有多个子视图, 但是一个子视图只能有一个父视图, 同为子视图, 后添加的会显示在上方.
setHidden视图隐藏属性, 默认值是NO, 隐藏父视图, 子视图会受到影响.
clipsToBounds, 裁掉子视图超过父视图的部分.
bounds, 是相对自己的坐标系, 修改视图的bounds自身不会发生变化, 但是会影响到子视图的变化.
frame是参考父视图的坐标系, 修改视图的frame, 会影响到父视图坐标的位置.
superview获得视图的父视图, subviews获得视图所有的子视图.
removeFromSuperview把视图从父视图移除.
NslineBreakByWordWrapping 换行模式, 默认是以单词换行.
CGSizeMake阴影偏移量
//将要旋转到什么方向
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
UIView * view = [self.view viewWithTag:101];
//如果屏幕是横屏,让视图调整大小
if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
view.frame = CGRectMake(20, 50, 440, 100);
}
else{
//否则视图还是原来的大小
view.frame = CGRectMake(20, 50, 280, 100);
}
NSLog(@"%s %d", __FUNCTION__, __LINE__);
}
//已经从哪个方向旋转过来
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
NSLog(@"%s %d", __FUNCTION__, __LINE__);
}
longp.view.transform = CGAffineTransformRotate(longp.view.transform, M_PI / 2);//让视图旋转90°.
CGPoint newCenter = [pp translationInView:pp.view];
pp.view.transform = CGAffineTransformTranslate(pp.view.transform, newCenter.x, newCenter.y);
[pp setTranslation:CGPointZero inView:pp.view];拖拽视图
ro.view.transform = CGAffineTransformRotate(ro.view.transform, ro.rotation);
ro.rotation = 0.0;//旋转视图
多态就是屏蔽子类差异话的部分, 让代码更加通用
slider.continuous = YES;//保持动作
UIImage * aImage = [UIImage imageNamed:@"1.png"];//这样创建的是同一个对象, 在内存里加载一次, 使用效率高, 但是会导致内存泄露, 无法及时释放,程序结束时才释放
NSString * path = [[NSBundle mainBundle] pathForResource:@"1" ofType:@"png"];
UIImage * image = [UIImage imageWithContentsOfFile:path];//解决方案用这样的方法创建, 根据包中图片路径创建UIImage, 是便利构造器, 能够及时释放, 创建的是不同的对象
语法糖
NSMutableArray * array = @[@"aaa", @"bbb", @"ccc"]; //这样出来的时候是不可变数组
NSMutableArray * array1 = [@[@"aaa", @"bbb", @"ccc"] mutableCopy];//这样出来的数组才是可变数组
NSNumber * num = [NSNumber numberWithFloat:5.8];
NSNumber * num1 = @5.8; //上下等价
NSArray * array3 = @[@"zhangsan", @5.8, @YES];
NSMutableDictionary * dic = @{@"name": @"zhangsan", @"sex":@"boy", @"age":@18};//这样创建的字典也是不可变的, 如果想转成可变的话就要用到mutablecopy
NSLog(@"%@", dic);
NSString * name = [dic objectForKey:@"name"];
NSString * name1 = dic[@"name"];//上下等价
NSLog(@"%@", name1);
[temView startAnimating];//当动画变的时候会停止播放, 改变之后要重新播放动画
//scorllView.contentOffset = CGPointMake(50, 50);//内容视图相对原点视图SCROLLVIEW的偏移量,在滚动过程中,这个属性会不停的发生变化 比较重要
//scorllView.scrollEnabled = NO;
//scorllView.contentInset = UIEdgeInsetsMake(200, 20, 10, 20);//相对scrollView上左下右决定从哪开始显示这个区域
//scorllView.directionalLockEnabled = YES;//在滚动的时候锁定方向, 即在滚动的时候只能沿着一个方向滚动
//scorllView.scrollsToTop = YES;//点击状态栏的时候返回顶部, 默认值是YES
//scorllView.bounces = YES;//弹跳效果, 到边界的时候会有弹跳效果, 默认是开启的
//scorllView.pagingEnabled = YES;//翻页效果
//scorllView.indicatorStyle = UIScrollViewIndicatorStyleDefault;//控制器的颜色
//scorllView.showsHorizontalScrollIndicator = NO;//不显示水平方向上的滚动条
//scorllView.showsVerticalScrollIndicator = NO;//不显示垂直方向上的滚动条