円形のUIViewを作る時はみなさんどうしているでしょうか? 基本的にはview.layer.cornerRadius = view.size.height/2; としていると思います。 この場合、拡大縮小のアニメーションをviewのframeを変更させて行うと、サイズに応じてcornerRadiusの値が高さの半分にならない為アニメーション中は角丸の四角になってしまいます。 円形をキープしつつ拡大縮小を行うにはアフィン変換を使ってアニメーションさせます。 //中心をとっておきます CGPoint center = self.center; //アニメーション後のサイズにviewを設定します self.frame = CGRectMake(0, 0, size.width, size.height); //中心をあわせます self.center = center; //この時点で円形にし
![円形をキープするUIViewのアニメーションはアフィン変換を使うべし - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/281e838b1920e26031a744a59514e4a045e5a958/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9JUU1JTg2JTg2JUU1JUJEJUEyJUUzJTgyJTkyJUUzJTgyJUFEJUUzJTgzJUJDJUUzJTgzJTk3JUUzJTgxJTk5JUUzJTgyJThCVUlWaWV3JUUzJTgxJUFFJUUzJTgyJUEyJUUzJTgzJThCJUUzJTgzJUExJUUzJTgzJUJDJUUzJTgyJUI3JUUzJTgzJUE3JUUzJTgzJUIzJUUzJTgxJUFGJUUzJTgyJUEyJUUzJTgzJTk1JUUzJTgyJUEzJUUzJTgzJUIzJUU1JUE0JTg5JUU2JThGJTlCJUUzJTgyJTkyJUU0JUJEJUJGJUUzJTgxJTg2JUUzJTgxJUI5JUUzJTgxJTk3JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0xMGRhODFlMTM2NGEwYzRlZDg1Y2M0MTRhZjI3ZTMwYg%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwbm9wcGVmb3h3b2xmJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1iOWJiMzVlYWE4YzhkZWNmYTFjOTJmYWZkOTc3YmFiNw%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D733c87729a8b4852ed2270f43cdf13ec)