zoukankan      html  css  js  c++  java
  • iOS开发 autoResizingMask使用

    autoResizingMask 是UIView的一个属性,在一些简单的布局中,使用autoResizingMask,可以实现子控件相对于父控件的自动布局。

    autoResizingMask 是UIViewAutoresizing 类型的,其定义为:

    @property(nonatomic) UIViewAutoresizing autoresizingMask;    // simple resize. default is UIViewAutoresizingNone

    UIViewAutoresizing 是一个枚举类型,默认是 UIViewAutoresizingNone,其可以取得值有:

    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
    };

    各属性解释:

    UIViewAutoresizingNone

    不会随父视图的改变而改变

    UIViewAutoresizingFlexibleLeftMargin

    自动调整view与父视图左边距,以保证右边距不变

    UIViewAutoresizingFlexibleWidth

    自动调整view的宽度,保证左边距和右边距不变

    UIViewAutoresizingFlexibleRightMargin

    自动调整view与父视图右边距,以保证左边距不变

    UIViewAutoresizingFlexibleTopMargin

    自动调整view与父视图上边距,以保证下边距不变

    UIViewAutoresizingFlexibleHeight

    自动调整view的高度,以保证上边距和下边距不变

    UIViewAutoresizingFlexibleBottomMargin

    自动调整view与父视图的下边距,以保证上边距不变

    注意:autoResizingMask 既可以在代码中直接使用,也可以在UIStoryboard中使用。

    一个代码中使用autoResizingMask的例子:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        UIViewController *viewController = [[UIViewController alloc] init];
        self.window.rootViewController = viewController;
        self.window.backgroundColor = [UIColor whiteColor];
        
        UIView *view = [[UIView alloc] initWithFrame:CGRectMake(20,100,200,100)];
        [view setBackgroundColor:[UIColor grayColor]];
        [self.window addSubview:view];
        
        UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(20,20,50,50)];
        [button setBackgroundColor:[UIColor whiteColor]];
        [view addSubview:button];
        //距离父视图右边距不变
        //button.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
        //距离父视图的左边距不变
        //button.autoresizingMask = UIViewAutoresizingFlexibleRightMargin;
        //距离父视图的左右边距不变,button大小会调整
        //button.autoresizingMask = UIViewAutoresizingFlexibleWidth;
        //view.frame = CGRectMake(20,100,300,100);
        
        //距离父视图的下边距不变
        //button.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;
        //距离父视图的上边距不变
        //button.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin;
        //距离父视图的上下边距不变,button大小会调整
        button.autoresizingMask = UIViewAutoresizingFlexibleHeight;
        view.frame = CGRectMake(20,100,200,200);
        
        [self.window makeKeyAndVisible];
        return YES;
    }

    另外,autoResizingMask 可以组合使用。例如:

    button.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleLeftMargin;

    表示的是,子控件相对于父控件的顶部和右侧的距离不变。

  • 相关阅读:
    垃圾回收器总结(一)
    JVM 总结
    如何提升自己?
    堆和栈的区别
    Java 8 Streams API 详解
    说一说JVM双亲委派机制与Tomcat
    说一说switch关键字的奥秘
    深入了解 Java Resource && Spring Resource
    Spring 动态代理 之 but was actually of type 'com.sun.proxy.$Proxy14 Exception
    架构设计基础:单服务.集群.分布式,基本区别和联系
  • 原文地址:https://www.cnblogs.com/acBool/p/5175998.html
Copyright © 2011-2022 走看看