0
私はラベルがあり、コントロール、テキストボックス&の2つのボタンがiOSのビューにあります。 2つのセグメントがあります。セグメント1ではビューはimage1のようになり、セグメント2を選択するとビューはimage2のようになります。iOSのAutolayout
各セグメントは、それがレイアウトを変更する必要がクリックされるたび。
image最初は出力として取得しますが、次の選択ではレイアウトは変更されません。希望の結果を得るために何をするのですか?
以下はあなたがXIBの要素を追加し、この場合には動作しないことが制約を再生しようとしている私のコード
#import "ViewController.h"
@interface ViewController()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.textview.hidden = true;
self.btnSMSOut.translatesAutoresizingMaskIntoConstraints = NO;
self.btnCallOut.translatesAutoresizingMaskIntoConstraints = NO;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)segementA:(id)sender {
if (self.segmentOutput.selectedSegmentIndex == 0) {
[self.btnSMSOut removeConstraints: [self.btnSMSOut constraints]];
[self.btnCallOut removeConstraints: [self.btnCallOut constraints]];
self.textview.hidden = true;
self.btnCallOut.hidden = false;
[self view1];
}
else {
[self.btnSMSOut removeConstraints: [self.btnSMSOut constraints]];
[self.btnCallOut removeConstraints: [self.btnCallOut constraints]];
self.textview.hidden = false;
self.btnCallOut.hidden = true;
[self view2];
}
}
- (void)view2
{
NSLog(@"function view 1");
NSDictionary *viewsDictionary = @{@"btnSMS":self.btnSMSOut};
NSArray *constraint_H = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[btnSMS(30)]" options:0 metrics:nil views:viewsDictionary];
NSArray *constraint_V = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[btnSMS(288)]" options:0 metrics:nil views:viewsDictionary];
[self.btnSMSOut addConstraints:constraint_H];
[self.btnSMSOut addConstraints:constraint_V];
NSArray *constraint_VPOS = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-343-[btnSMS]" options:0 metrics:nil views:viewsDictionary];
NSArray *constraint_HPOS = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-15-[btnSMS]" options:0 metrics:nil views:viewsDictionary];
[self.view addConstraints:constraint_HPOS];
[self.view addConstraints:constraint_VPOS];
}
- (void)view1
{
NSLog(@"function view 2");
NSDictionary *viewsDictionary2 = @{@"btnCall":self.btnCallOut, @"btnSMS":self.btnSMSOut};
NSArray *constraint_H = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[btnCall(30)]" options:0 metrics:nil views:viewsDictionary2];
NSArray *constraint_V = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[btnCall(115)]" options:0 metrics:nil views:viewsDictionary2];
[self.btnCallOut addConstraints:constraint_H];
[self.btnCallOut addConstraints:constraint_V];
NSArray *constraint_VPOS = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-380-[btnSMS]" options:0 metrics:nil views:viewsDictionary2];
NSArray *constraint_HPOS = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-145-[btnSMS]" options:0 metrics:nil views:viewsDictionary2];
[self.view addConstraints:constraint_HPOS];
[self.view addConstraints:constraint_VPOS];
NSArray *constraint_H1 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[btnSMS(30)]" options:0 metrics:nil views:viewsDictionary2];
NSArray *constraint_V1 = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[btnSMS(115)]" options:0 metrics:nil views:viewsDictionary2];
[self.btnSMSOut addConstraints:constraint_H1];
[self.btnSMSOut addConstraints:constraint_V1];
NSArray *constraint_VPOSC = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-380-[btnCall]" options:0 metrics:nil views:viewsDictionary2];
NSArray *constraint_HPOSC = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-145-[btnCall]" options:0 metrics:nil views:viewsDictionary2];
[self.view addConstraints:constraint_HPOSC];
[self.view addConstraints:constraint_VPOSC];
}
[self.view layoutIfNeeded];これをセグメントアクションで呼び出して、 – karthikeyan
を確認してください。ちょっとした提案です。プログラムによる自動レイアウトは使用しないでください。 – phani
PhaniRaghu autolayoutsをプログラムで使用する以外の代替ソリューションはありません – ck1924