9

RoryLewisの本によるAbsoluteBeginners用のiPhoneおよびiPadアプリを使用してobjective-cの勉強を始めましたが、第5章で行き詰まりました。

画像を縮小するボタンを作りたいです。
私の問題は、すべてのコードを記述した後、画像がUIImageView(左上)のポイント(0、0)に縮小するのに対し、ビデオでは画像が中央に縮小することです。いくつかの調査を行ったところCGAffineTransform、オブジェクトの中心を使用して平行移動や回転などを行うことがわかりました。

では、なぜ私の場合は機能しないのですか?

私は最新のXcodeバージョンを持っており、何も奇妙なことはしていません。はっきりしているといいのですが。英語でごめんなさい。

編集 コードで申し訳ありませんが、私は私の電話から質問を書きました。とにかく、罪を犯した部分はこのようになります

- (IBAction)shrink:(id)sender {

if(hasShrink == NO){
    [shrinkButton setTitle:@"Grow" forState:UIControlStateNormal];
}
else if(hasShrink == YES){
    [shrinkButton setTitle:@"Shrink" forState:UIControlStateNormal];
}
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:1.0];
        myIcon.transform = CGAffineTransformMakeScale(.25, .25);
        hasShrink = YES;
        [UIView commitAnimations];

}

すべてのアニメーションは正しく記述されており、アプリは機能します。左上に縮小するだけです。ポイントがデフォルトでUIImageViewの中心に設定されていないのはなぜですか?

編集: 私はそれがAutoLayoutによって引き起こされた問題であると考えました。無効にすると、すべてがスムーズに進みました;)

4

3 に答える 3

9

自動レイアウトによって管理されているマングルされたビューを変換している場合、いくつかの奇妙な副作用が発生する可能性があります。詳細については、この回答を参照してください。

私が採用した解決策は、変換したいビューをまったく同じサイズの別のビュー内にカプセル化することでした。外側のビューには適切なレイアウト制約が適用され、内側のビューは単純にコンテナの中央に配置されました。スケール変換を内部ビューに適用すると、CGAffineTransform正しく中央に配置されるようになりました。

于 2014-09-11T00:22:22.837 に答える
8

古い質問...しかし、他の人が探しに来る場合に備えて:

アンカーポイントの周りのCGAffineTransform動作(回転、スケーリング)。

サイズを0、0にすると、アンカーポイントは0、0に設定されます。画像の中心など、別のポイントにサイズを変更する場合は、アンカーポイントを変更する必要があります。

アンカーはレイヤーの一部です

したがって、がUIImageView呼び出されたimageview場合は、次のように呼び出して、アンカーをimageviewの中心に設定します。

[imageview.layer setAnchorPoint:CGPointMake(0.5, 0.5)];
于 2013-03-25T04:54:21.567 に答える
7

次のようなものを試してください。

CGAffineTransform t = CGAffineTransformMakeScale(0.5, 0.5);
CGPoint center = imageView.center; // or any point you want
[UIView animateWithDuration:0.5
                 animations:^{
                    imageView.transform = t;
                    imageView.center = center;
                 }
                 completion:^(BOOL finished) {
                    /* do something next */
                 }];

次回はコードを表示します。あなたを助けるのは簡単でしょう。

このプロジェクトを確認してください:https ://github.com/djromero/StackOverflow/archive/Q-13706255.zip

自動レイアウトと自動サイズ変更がビューにどのように影響するかを調べる必要があります。上記のプロジェクトでは、両方が無効になっていて、どのように機能するかを確認できます。

于 2012-12-04T15:34:03.497 に答える