UIViewのautoresizingMask
3055 ワード
[iOS/Swift/OC開発交流群|127183325]交流学習へようこそ
iOSには2つの自動レイアウトがあります. autoresizing autolayout、このレイアウトはiOS 6以降に追加された です.
AutoresizingMaskはUIViewの属性で、使いやすいです.アプリケーションのインタフェースが簡単であれば、autoresizingを使用して自動レイアウトを行うことができます.
UIViewAutoresizingは列挙タイプで、デフォルトタイプは自動レイアウトをしないUIViewAutoresizingNoneです.
これらのプロパティの意味を1つのテーブルで説明します.
属性値
意味
UIViewAutoresizingNone
自動レイアウトは行わず、親ビューの変更に従って変更されません.
UIViewAutoresizingFlexibleLeftMargin
親ビューの左からの距離を自動的に調整し、右からの距離を維持します.
UIViewAutoresizingFlexibleWidth
自分の幅を自動的に調整し、親ビューの左右の余白と変わらないようにします.
UIViewAutoresizingFlexibleRightMargin
親ビューから右への距離を自動的に調整し、左への距離を一定に保つ
UIViewAutoresizingFlexibleTopMargin
親ビューの上からの距離を自動的に調整し、下からの距離を一定に保つ
UIViewAutoresizingFlexibleHeight
高さを自動調整し、上と下を一定に保つ
UIViewAutoresizingFlexibleBottomMargin
親ビューとの下マージンを自動的に調整し、上マージンを一定に保つ
これらのプロパティは、次のように組み合わせて使用できます.
viewの幅は親ビューの変化に伴って自動的に調整され、親ビューとの下辺距離は自動的に調整され、親ビューとの上辺距離は変わらない.
注意:
UIViewのautoresizesSubviewsプロパティがYESの場合、上記のプロパティが有効になります.デフォルトはYESです.
コードを添付して、効果を確認します.
現在のコードでは、クリックすると親ビューの幅が小さくなり、子ビューは親ビューとの左右の余白を一定に保つために、親ビューが小さくなるにつれて幅が小さくなります.
iOSには2つの自動レイアウトがあります.
AutoresizingMaskはUIViewの属性で、使いやすいです.アプリケーションのインタフェースが簡単であれば、autoresizingを使用して自動レイアウトを行うことができます.
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
};
これらのプロパティの意味を1つのテーブルで説明します.
属性値
意味
UIViewAutoresizingNone
自動レイアウトは行わず、親ビューの変更に従って変更されません.
UIViewAutoresizingFlexibleLeftMargin
親ビューの左からの距離を自動的に調整し、右からの距離を維持します.
UIViewAutoresizingFlexibleWidth
自分の幅を自動的に調整し、親ビューの左右の余白と変わらないようにします.
UIViewAutoresizingFlexibleRightMargin
親ビューから右への距離を自動的に調整し、左への距離を一定に保つ
UIViewAutoresizingFlexibleTopMargin
親ビューの上からの距離を自動的に調整し、下からの距離を一定に保つ
UIViewAutoresizingFlexibleHeight
高さを自動調整し、上と下を一定に保つ
UIViewAutoresizingFlexibleBottomMargin
親ビューとの下マージンを自動的に調整し、上マージンを一定に保つ
これらのプロパティは、次のように組み合わせて使用できます.
UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin
viewの幅は親ビューの変化に伴って自動的に調整され、親ビューとの下辺距離は自動的に調整され、親ビューとの上辺距離は変わらない.
注意:
UIViewのautoresizesSubviewsプロパティがYESの場合、上記のプロパティが有効になります.デフォルトはYESです.
コードを添付して、効果を確認します.
//
// ViewController.m
// HPSwitchViewDemo
//
// Created by on 16/10/10.
// Copyright © 2016 . All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@property (nonatomic, weak) UIView *myView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// view
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(20, 50, 300, 300)];
view.backgroundColor = [UIColor blueColor];
[self.view addSubview:view];
view.autoresizesSubviews = YES;
self.myView = view;
//
UIView *view0 = [[UIView alloc] initWithFrame:CGRectMake(10, 10, 150, 150)];
view0.backgroundColor = [UIColor greenColor];
view0.autoresizingMask = UIViewAutoresizingFlexibleWidth;
[view addSubview:view0];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
CGRect frame = self.myView.frame;
frame = CGRectMake(frame.origin.x, frame.origin.y, frame.size.width-10, frame.size.height);
self.myView.frame = frame;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
現在のコードでは、クリックすると親ビューの幅が小さくなり、子ビューは親ビューとの左右の余白を一定に保つために、親ビューが小さくなるにつれて幅が小さくなります.