2017-04-18 40 views
0

我有一個標籤,segemented控件,文本框& iOS中視圖中的2個按鈕。 有2個部分。在段1上,視圖應該看起來像image1,而在選擇段2時,視圖應該看起來像是image2。iOS中的Autolayout編程式

Image 1

Image 2

每次各個段被點擊它應該改變佈局。

圖片一是我得到的輸出最初,但在下一次選擇,它不會改變佈局。我做了什麼來克服期望的結果。

下面是我的代碼

#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]; 

} 
+0

[self.view layoutIfNeeded];在段操作中調用它並檢查 – karthikeyan

+0

它只是一個建議,不要以編程方式使用自動佈局。 – phani

+0

PhaniRaghu什麼是替代解決方案,除了以編程方式使用自動佈局 – ck1924

回答

0

您已經添加在廈門國際銀行的元素,並試圖與可能無法在這種情況下,工作的限制發揮。最好嘗試以下操作。

通過編程創建像段控制,按鈕,文本字段等所有元素,然後添加約束。

當在片段之間翻轉時,刪除以前的片段並添加新的片段內容。

讓我知道你是否有任何問題。