iOS开篇——UI之UIView

UIView的几个主要属性

1     /*
2      CGRect            frame;
3
4      CGRect            bounds;
5
6      CGPoint           center;
7
8      CGAffineTransform transform;
9      */

frame 坐标与长宽

center 中心点

bounds 坐标系限制(?)

UIView的形变

    //view的变形 ()

    //直接形变
    view.transform = CGAffineTransformMakeScale(1, 1);

    //旋转形变 传入一个弧度
    view.transform = CGAffineTransformMakeRotation(M_PI);

    /*
     #define M_E         2.71828182845904523536028747135266250    e
#define M_LOG2E     1.44269504088896340735992468100189214    log2(e)
#define M_LOG10E    0.434294481903251827651128918916605082   log10(e)
#define M_LN2       0.693147180559945309417232121458176568   loge(2)
#define M_LN10      2.30258509299404568401799145468436421    loge(10)
#define M_PI        3.14159265358979323846264338327950288    pi
#define M_PI_2      1.57079632679489661923132169163975144    pi/2
#define M_PI_4      0.785398163397448309615660845819875721   pi/4
#define M_1_PI      0.318309886183790671537767526745028724   1/pi
#define M_2_PI      0.636619772367581343075535053490057448   2/pi
#define M_2_SQRTPI  1.12837916709551257389615890312154517    2/sqrt(pi)
#define M_SQRT2     1.41421356237309504880168872420969808    sqrt(2)
#define M_SQRT1_2   0.707106781186547524400844362104849039   1/sqrt(2)

     */
    //改变父视图的透明度
    //子视图的透明度也会跟着改变

    view.alpha = 0.3;
//  设置子视图超出范围时切割
    view.clipsToBounds = NO;
    //父视图关闭视图交互
    //关闭交互后 子视图交互也全部关闭
    view.userInteractionEnabled = NO;
    //subView是view的子视图
    [view addSubview:subView];
    //点击超出父视图范围的地方  不会调用
    [button addTarget:self action:@selector(printString) forControlEvents:UIControlEventTouchUpInside];

若两个Button有重叠部分 则点击重叠部分 点击方法调用的是最上层的  也就是后添加的。

    //arr获取父视图的子视图数组 最底层为0
    NSArray * arr = view.subviews;
    //改变子视图图层关系 都是父视图的方法
    //把视图移动到所有子视图最上面 *
    [view bringSubviewToFront:arr[0]];
    //把子视图移动到所有子视图最下面 *
    [view sendSubviewToBack:arr[2]];
    //把子视图插入到某个视图上面  第一个参数为要移动的视图
    [view insertSubview:arr[2] aboveSubview:arr[1]];
    //把一个子视图 插入到某一个视图的下面
    [view insertSubview:arr[2] belowSubview:arr[1]];
    //把一个视图 插入到某层位置  从底部开始 如果要移动的子视图没有添加到父视图上 会先添加到父视图上
    [view insertSubview:arr[0] atIndex:1];

UIView动画

//动画从这里开始
    [UIView beginAnimations:nil context:nil];
    //设置动画执行时间
    [UIView setAnimationDuration:1];
    //设置动画延迟执行时间
    [UIView setAnimationDelay:1];

    //设置动画代理
    [UIView setAnimationDelegate:self];
    //动画结束后执行的方法
    [UIView setAnimationDidStopSelector:@selector(changeView)];

    //动画执行的内容
    view.frame = self.view.bounds;
    view.backgroundColor = [UIColor greenColor];

    //开始执行动画
    [UIView commitAnimations];

快速设置

   //block动画
    // 时间  延迟 选择动画  动画执行内容  执行结束后的block方法
        [UIView animateWithDuration:0.5 delay:0 options: UIViewAnimationOptionBeginFromCurrentState animations:^{
        view.frame = CGRectMake(arc4random()%415, arc4random()%737, arc4random()%200,arc4random()%200);
        view.center = CGPointMake(arc4random()%415, arc4random()%737);
        view.backgroundColor = [UIColor colorWithRed:10000/(arc4random()%40000) green:10000/(arc4random()%40000) blue:10000/(arc4random()%10000) alpha:0.8];
    } completion:^(BOOL finished) {
        [self changeView];
    }];

停靠模式   父视图改变时 子视图的改变

    //设置子视图的停靠模式
    subView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;

    /*
     typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {
     UIViewAutoresizingNone                 = 0,            没有效果
     UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,       自由左编辑 子视图和父视图右边间距不变
     UIViewAutoresizingFlexibleWidth        = 1 << 1,       横向两边间距不变
     UIViewAutoresizingFlexibleRightMargin  = 1 << 2,       自由右编辑
     UIViewAutoresizingFlexibleTopMargin    = 1 << 3,       自由顶编辑 底部间距不变
     UIViewAutoresizingFlexibleHeight       = 1 << 4,       竖向两侧间距不变
     UIViewAutoresizingFlexibleBottomMargin = 1 << 5        顶部间距不变
     };
     */

关于滑块控件  UISlider

    //创建一个滑块控件
    UISlider * slider = [[UISlider alloc]initWithFrame:CGRectMake(60, 400, 200, 50)];
    //左侧值
    slider.minimumValue = 0;
    //右侧值
    slider.maximumValue = 200;

    //设置初始值
    slider.value = 200;
    //添加滑动方法   UIControlEventValueChanged值改变时执行changeValue:方法
    [slider addTarget:self action:@selector(changeValue:) forControlEvents:UIControlEventValueChanged];
时间: 2024-08-03 23:25:36

iOS开篇——UI之UIView的相关文章

IOS开发UI基础UIView

主要介绍下UIView得基本概念和一些属性的介绍至于属性的用户后面会由详细的介绍 -.UIView基本概念 1.什么是控件? 屏幕上所有的UI元素都叫做控件 (也有很多书中叫做视图 组件) 比如 按钮(UIButton) 文本(UILabel)都是控件 控件的共同属性有哪些? 尺寸 位置 背景色 ........... 苹果将控件的共同属性都抽取到父类UIView中 所有的控件最终都继承自UIView中 UIBUtton UIView都继承自UIView 父控件.子控件 每个控件都是个容器 能够

iOS开篇——UI之UIGestureRecogzier_手势

一.UITouch 1 //任何视图都可以触发此方法 2 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ 3 NSLog(@"视图被触摸了"); 4 } 5 6 - (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ 7 NSLog(@"因意外

iOS开篇——UI之UITableView

1 #import "ViewController.h" 2 3 @interface ViewController ()<UITableViewDataSource,UITableViewDelegate> 4 { 5 //创建数据源 6 NSMutableArray * _dataArray; 7 8 } 9 10 @end 11 12 @implementation ViewController 13 14 - (void)viewDidLoad { 15 [supe

iOS开篇——UI之UITextField

创建文本输入框 UITextField * textField = [[UITextField alloc]initWithFrame:CGRectMake(50, 50, 250, 40)]; 设置边框样式 textField.borderStyle = UITextBorderStyleRoundedRect; /* typedef NS_ENUM(NSInteger, UITextBorderStyle) { UITextBorderStyleNone, 无效果 UITextBorderS

iOS开发UI篇—UIView简介

一.情况一,设置阴影 // shadowColor 阴影颜色 self.view.layer.shadowColor = UIColorFromRGB(0x000000).CGColor; // shadowOffset 偏移位置 self.view.layer.shadowOffset = CGSizeMake(2, 4); // 透明度 0 到1之间 self.view.layer.shadowOpacity = 0.5; // 阴影圆角 self.view.layer.shadowRadi

iOS开篇——UI之UITextView

创建UITextView //创建一个单例对象 存储_str字符串 NSUserDefaults * hd = [NSUserDefaults standardUserDefaults]; _str = [hd objectForKey:@"str"]; UITextView * textView = [[UITextView alloc]initWithFrame:CGRectMake(50, 100, 200, 200)]; textView.delegate = self; te

iOS开篇——UI之UAlertView(提示框)

创建提示框 //创建提示框 //标题 提示内容 代理对象 按钮 UIAlertView * alertView = [[UIAlertView alloc]initWithTitle:@"警告" message:@"萨达姆已经做好战斗准备" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定",@"不确定", nil]; 设置提示框样式

iOS开篇——UI之UISegmentedControl (分段选择器)

创建分段选择器 UISegmentedControl * sc = [[UISegmentedControl alloc]initWithFrame:CGRectMake(50, 100, 200, 30)]; [sc insertSegmentWithTitle:@"第一页" atIndex:0 animated:YES]; [sc insertSegmentWithTitle:@"第二页" atIndex:1 animated:YES]; [sc insertS

iOS开篇——UI之UIActionSheet

UIActionSheet在iOS8.3之后已不建议使用. 可以使用 UIAlertController+UIAlertControllerStyleActionSheet获得同样的效果 创建UIActionSheet UIActionSheet * as = [[UIActionSheet alloc]initWithTitle:@"选择一个英雄" delegate:self cancelButtonTitle:@"取消" destructiveButtonTit