0
我有一個標籤,segemented控件,文本框& iOS中視圖中的2個按鈕。 有2個部分。在段1上,視圖應該看起來像image1,而在選擇段2時,視圖應該看起來像是image2。iOS中的Autolayout編程式
每次各個段被點擊它應該改變佈局。
圖片一是我得到的輸出最初,但在下一次選擇,它不會改變佈局。我做了什麼來克服期望的結果。
下面是我的代碼
#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什麼是替代解決方案,除了以編程方式使用自動佈局 – ck1924