IBにレイアウトロジックの大部分を持つプロジェクトがあります。私はviewDidAppearでそれを置くように、動的に更新したい位置のいくつか:アクションが起動されるたびにIOSビューがデフォルトのIBレイアウトに更新されます
- (void)viewDidAppear:(BOOL)animated{
// Fill array of button tools
buttonArray = [[NSArray alloc] initWithObjects:
self.filterButton, self.bulgeButton, self.stickerButton, self.textButton, self.drawButton, self.invertedBulgeButton, nil];
// Position button tools
int const X_POSITION = 175; // The x position of the tool buttons
int yPosition = 0; // The x position of the tool buttons
CGRect frame = CGRectMake(X_POSITION, yPosition, 100, 100); // The position and size of the tool buttons
// Loop through buttons and set properties
for (UIButton *button in buttonArray) {
frame.origin.y = yPosition;
button.frame = frame;
yPosition += 75;
button.hidden = false;
}
}
私が持っている問題は、私は別のボタンを押すと、必ず私がviewDidAppearに適用されるすべての書式設定が取り消されていることで、ボタンの位置は、彼らがIBにあるものに変更されました。 IBで設定した場所にボタンが移動しないようにするにはどうすればよいですか?
編集:ここでは、位置が変化するようになりますコードの一部です:
// Undoes most recent edit to photo
- (IBAction)undoButtonPress:(id)sender {
[self undoImage];
}
- (void)undoImage {
// TODO: Add all the other current actions.... none of them work because they need to be checked for here
// Remove tools for the current action
self.imageSticker.image = nil;
[self refreshImageText];
currentAction = NONE;
self.mainImage.image = [_images pop];
}
// after done editing the text, this resets the text fields so you can create a second text
- (void) refreshImageText{
self.hiddenTextField.text = @"";
self.imageText.text = @"";
self.imageText.transform = CGAffineTransformMakeRotation(0);
[self.imageText setCenter:self.view.center];
}
自動レイアウトを使用していますか? – random
@randomはい私は –
レイアウトをリセットするこれらの「アクション」を実行するときに実行されているコードを表示する必要があります。 – Zolnoor