首页 > 代码库 > 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;//不显示垂直方向上的滚动条