UIImageViewを丸くトリミングする
TweetBotのサムネイル表示のように、画像を丸くトリミングする方法を紹介します。
CALayerを使うと数行で実装出来るので便利です。
とりあえずサンプルコード
UIImage *circleImage = [UIImage imageNamed:@"test.png"]; UIImageView *circleImageView = [[UIImageView alloc] initWithImage:circleImage]; if (circleImage.size.width != circleImage.size.height) { CGFloat smallerSideLength = (circleImage.size.width < circleImage.size.height) ? circleImage.size.width : circleImage.size.height; circleImageView.frame = CGRectMake((circleImage.size.width - smallerSideLength) * 0.5f, (circleImage.size.height - smallerSideLength) * 0.5f, circleImage.size.width, circleImage.size.height); } else { circleImageView.frame = CGRectMake(0.0f, 0.0f, circleImage.size.width, circleImage.size.height); } circleImageView.layer.cornerRadius = circleImageView.frame.size.width * 0.5f; circleImageView.clipsToBounds = YES; [self addSubview:circleImageView]
iOS Circler masked UIImageView
上のコードで、四角形のUIImageViewを正円にトリミング出来ます。
元の画像の縦横比が違うときは、短い辺を基準に、真ん中でトリミングしています。
大切なのは
circleImageView.layer.cornerRadius = circleImage.size.width * 0.5f;
circleImageView.clipsToBounds = YES;
この2行だけです。
元の画像としてtwitter等の正方形の画像を用意すれば、面倒な分岐も必要ないので、単純に円形に切り抜きたいという時に使えるかと。