親View Controllerが画面に表示されたときに少し上に移動しようとしているUIViewがあります。私はこれについて読んでいますが、ほとんどの場合、viewDidAppear メソッドを使用してレイアウトを視覚的に調整するように見えます。私はこれを試しましたが、うまくいかないようです。何も起こらず、origin.y を nslog にしましたが、-47,000 が返されました。これは、何かがまだ初期化されていないことを示している可能性があります。これが私が試したことです。
- (void) viewDidAppear:(BOOL)animated
{
// set the save view y postion
saveData.center = CGPointMake( 0.0f, 0.5f );
NSLog(@"This is the y %f", saveData.frame.origin.y);
NSLog(@"This is the center points on load %@", NSStringFromCGPoint(optionalData.center));
}
しかし、viewDidLoad メソッドに遅延メソッド呼び出しを追加する場合、次のようにします。
[self performSelector:@selector(moveSaveView) withObject:nil afterDelay:0.7f];
これがあれば、うまくいきます
- (void) moveSaveView
{
// set the save buttons y postion
[UIView animateWithDuration:0.5 delay:0.0 options:0 animations:^{
// Animate the alpha value of your imageView from 1.0 to 0.0 here
optionalData.alpha = 0.0f;
} completion:^(BOOL finished) {
// Once the animation is completed and the alpha has gone to 0.0, hide the view for good
optionalData.hidden = YES;
}];
// move the save button up
[UIView animateWithDuration:0.5
animations:^{saveData.center = CGPointMake( 160.0f, 280.5f );}];
saveData.center = CGPointMake( 160.0f, 280.5f );
}
自動レイアウトを使用しているため、これも問題ですか? ビューを必要な場所から開始したいだけで、それを実現するために遅延呼び出しを使用しないでください。
編集: だから私はこれを試してみて、UIViewを動かそうと思いついた:
- (void) viewDidAppear:(BOOL)animated
{
NSLog(@"this is the constraing %f", saveData.saveButtomConstraint.constant); // gives me 93 which is here its at.
saveData.saveButtomConstraint.constant = 32;
[saveData setNeedsUpdateConstraints];
[saveData layoutIfNeeded];
NSLog(@"this is the constraing %f", saveData.saveButtomConstraint.constant); // gives me 32 which is here its at.
}
問題は、ビューが画面上で移動しないことです。私は何が欠けていますか?また、同じ質問に関連する場合、このように投稿および編集しても問題ありませんか? 私はまだこのフォームのコツをつかもうとしています。