xCode 4.5 の新しい自動レイアウト機能について、かなり混乱しています。
やりたいことはこちら、
ストーリーボードを設定することで、この縦向きビューを設定しました。
自動レイアウトと制約 (およびピン) を使用して、このように横向きに反転したときにレイアウトを変換するにはどうすればよいですか?
ビューのCGRect(サイズと座標の位置)をコーディングして変更しようとしましたが、ランドスケープされていましたが、役に立ちませんでした。
xCode 4.5 の新しい自動レイアウト機能について、かなり混乱しています。
やりたいことはこちら、
ストーリーボードを設定することで、この縦向きビューを設定しました。
自動レイアウトと制約 (およびピン) を使用して、このように横向きに反転したときにレイアウトを変換するにはどうすればよいですか?
ビューのCGRect(サイズと座標の位置)をコーディングして変更しようとしましたが、ランドスケープされていましたが、役に立ちませんでした。
NSLayoutConstraints は、自動レイアウトの CGRects の必要性を置き換えます。まず、あなたのレイアウトを言葉で説明してください。あなたの肖像画の例を説明する方法は次のとおりです。
の既存の制約を削除superview
し、指定されたインターフェイスの向きに新しい制約を適用するメソッドを次に示します。
- (void) buildConstriantsForInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Remove existing constraints.
[superview removeConstraints:superview.constraints] ;
// Build an array to hold new constraints.
NSMutableArray* constraints = [NSMutableArray new] ;
// Add 2 constraints that apply to both Portrait & Landscape orientations.
[constraints addObject:[NSLayoutConstraint constraintWithItem:red attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:superview attribute:NSLayoutAttributeWidth multiplier:0.6 constant:0]] ;
[constraints addObject:[NSLayoutConstraint constraintWithItem:blue attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:superview attribute:NSLayoutAttributeHeight multiplier:0.55 constant:0]] ;
// Build a dictionary to store references to NSViews.
NSDictionary* views = NSDictionaryOfVariableBindings(superview, blue, red, yellow) ;
// To eliminate repeated NSLayoutConstraint code, build an array of Format Strings with which to build constraints.
NSArray* formatStrings ;
if ( UIInterfaceOrientationIsPortrait(interfaceOrientation) ) {
formatStrings = @[@"H:|[blue]|", @"H:|[red]-[yellow]|", @"V:|[blue]-[red]|", @"V:[blue]-[yellow]|"] ;
}
else {
formatStrings = @[@"H:|[blue]-[yellow]|", @"H:|[red]-[yellow]", @"V:|[blue]-[red]|", @"V:|[yellow]|"] ;
}
for ( NSString* formatString in formatStrings ) {
[constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:formatString options:0 metrics:nil views:views]] ;
}
// Add the newly created constraints.
[superview addConstraints:constraints] ;
}
ビューがロードまたは回転するたびに、そのメソッドを呼び出すことができます。
-(void) viewDidLoad {
superview.translatesAutoresizingMaskIntoConstraints = NO ;
[self buildConstriantsForInterfaceOrientation:self.interfaceOrientation] ;
}
- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
[self buildConstriantsForInterfaceOrientation:toInterfaceOrientation] ;
}