63

円である UIView または UIImageView を作成したい。または、スライダーを使用してサイズを変更し、ピッカービューで色を変更できる円。

4

7 に答える 7

107

少なくとも、任意のサイズの円を描くためのショートカットをお見せできます。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 にする必要があります。

于 2009-12-13T13:45:54.217 に答える
33
// For those looking to round the corners of an image view
imageView.layer.cornerRadius = imageView.bounds.size.width/2;
imageView.layer.masksToBounds = YES;
于 2014-01-30T19:03:21.863 に答える
23

誰かが以下よりも同等のSwiftを探している場合、答えは次のとおりです(Xcode7.2):

(これが機能するには、高さと幅が等しくなければなりません。)

extension UIView {
    func makeCircular() {
        self.layer.cornerRadius = min(self.frame.size.height, self.frame.size.width) / 2.0
        self.clipsToBounds = true
    }
}

ここに画像の説明を入力

于 2016-01-28T06:20:19.263 に答える
12

グラフィックコールは必要ありません。角の半径を幅/ 2に設定するだけです。これは、任意のビジュアルオブジェクト、つまりUI要素で実行できます

于 2013-05-16T09:55:32.253 に答える
6

きちんとした、クリーンでエレガントな解決策は、添付のスクリーンショットに示すように、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

ここに画像の説明を入力

于 2020-05-10T11:48:17.380 に答える
3

透明な UIView (背景色のアルファ 0) を作成し、その drawRect: で、CoreGraphics 呼び出しを使用して円を描画する必要があります。ビューのレイヤーを編集して、cornerRadius を与えることもできます。

于 2009-12-10T04:21:47.983 に答える