円である UIView または UIImageView を作成したい。または、スライダーを使用してサイズを変更し、ピッカービューで色を変更できる円。
7 に答える
少なくとも、任意のサイズの円を描くためのショートカットをお見せできます。OpenGL や Core Graphics の描画は不要です。
QuartzCore フレームワークをインポートして、UIView または UIImageViewの.cornerRadiusプロパティにアクセスします。
#import <QuartzCore/QuartzCore.h>
また、プロジェクトの Frameworks フォルダーに手動で追加します。
このメソッドをビュー コントローラーまたは必要な場所に追加します。
-(void)setRoundedView:(UIImageView *)roundedView toDiameter:(float)newSize;
{
CGPoint saveCenter = roundedView.center;
CGRect newFrame = CGRectMake(roundedView.frame.origin.x, roundedView.frame.origin.y, newSize, newSize);
roundedView.frame = newFrame;
roundedView.layer.cornerRadius = newSize / 2.0;
roundedView.center = saveCenter;
}
それを使用するには、UIImageViewと直径を渡すだけです。この例では、「circ」という名前の UIImageView がビューにサブビューとして追加されていることを前提としています。見えるように、backgroundColorが設定されている必要があります。
circ.clipsToBounds = YES;
[self setRoundedView:circ toDiameter:100.0];
これはUIImageViewsを処理するだけですが、任意のUIViewに一般化できます。
注: iOS 7 以降、clipToBounds は YES にする必要があります。
// For those looking to round the corners of an image view
imageView.layer.cornerRadius = imageView.bounds.size.width/2;
imageView.layer.masksToBounds = YES;
グラフィックコールは必要ありません。角の半径を幅/ 2に設定するだけです。これは、任意のビジュアルオブジェクト、つまりUI
要素で実行できます
きちんとした、クリーンでエレガントな解決策は、添付のスクリーンショットに示すように、Xcode の Identity Inspector で呼び出されたクラスを作成し、RoundedUIView
それを要素のカスタム クラスとして選択することです。UIView
import UIKit
@IBDesignable public class RoundedUIView: UIView {
override public func layoutSubviews() {
super.layoutSubviews()
self.layer.cornerRadius = self.frame.width / 2;
self.layer.masksToBounds = true
}
}
アプリ自体が緑のテーマを持っているため、白い背景のさまざまな画面に複数の色付きのアイコンを表示する必要がありました。だから私はそれらを次のように見せるためUIImgeView
に上に置きます:RoundedUIView
透明な UIView (背景色のアルファ 0) を作成し、その drawRect: で、CoreGraphics 呼び出しを使用して円を描画する必要があります。ビューのレイヤーを編集して、cornerRadius を与えることもできます。