597

私のログインビューには、 「サインイン…」というメッセージが表示されたサブビューがありますUIActivityViewUILabelこのサブビューには、丸められていないコーナーがあります。どうすればそれらを丸くすることができますか?

私のxib内でそれを行う方法はありますか?

4

21 に答える 21

1252

Try this

#import <QuartzCore/QuartzCore.h> // not necessary for 10 years now  :)

...

view.layer.cornerRadius = 5;
view.layer.masksToBounds = true;

Note: If you are trying to apply rounded corners to a UIViewController's view, it should not be applied in the view controller's constructor, but rather in -viewDidLoad, after view is actually instantiated.

于 2009-10-02T13:40:44.790 に答える
268

インターフェイス ビルダーのユーザー定義ランタイム属性機能を使用して、キー パスを値に設定することもできlayer.cornerRadiusます。ただし、必ずQuartzCoreライブラリを含めてください。

このトリックは、layer.borderWidth の設定にも機能しますがlayer.borderColor、これは a ではないことが予想されるため、機能しCGColorませんUIColor

これらのパラメーターは実行時に評価されるため、ストーリーボードで効果を確認することはできません。

Interface builder を使用して角の半径を設定する

于 2012-07-15T22:17:11.987 に答える
44

Ed Marty が行ったものとは異なるアプローチ:

#import <QuartzCore/QuartzCore.h>

[v.layer setCornerRadius:25.0f];
[v.layer setMasksToBounds:YES];

IB からすべてのオブジェクトをロードするには、setMasksToBounds が必要です...ビューが丸くなるという問題が発生しましたが、IB からのオブジェクトがありませんでした:/

これで修正されました= Dお役に立てば幸いです!

于 2010-12-09T12:23:36.337 に答える
28

このブログ投稿で説明されているように、UIView の角を丸める方法は次のとおりです。

+(void)roundView:(UIView *)view onCorner:(UIRectCorner)rectCorner radius:(float)radius
{
    UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:view.bounds
                                                   byRoundingCorners:rectCorner
                                                         cornerRadii:CGSizeMake(radius, radius)];
    CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
    maskLayer.frame = view.bounds;
    maskLayer.path = maskPath.CGPath;
    [view.layer setMask:maskLayer];
    [maskLayer release];
}

それについてのクールな部分は、丸めたい角を選択できることです.

于 2012-09-10T11:09:01.150 に答える
20

最初にヘッダーファイルをインポートする必要があります<QuartzCore/QuartzCore.h>

 #import QuartzCore/QuartzCore.h>

[yourView.layer setCornerRadius:8.0f];
yourView.layer.borderColor = [UIColor redColor].CGColor;
yourView.layer.borderWidth = 2.0f;
[yourView.layer setMasksToBounds:YES];

必ず-を使用してくださいsetMasksToBounds。そうしないと、効果が表示されない場合があります。

于 2012-08-01T10:19:20.560 に答える
19

UIView境界線の色と幅も変更できる次のカスタム クラスを使用できます。このIBDesignalbeままインターフェースビルダーでも属性を変更できます。

ここに画像の説明を入力

import UIKit

@IBDesignable public class RoundedView: UIView {

    @IBInspectable var borderColor: UIColor = UIColor.white {
        didSet {
            layer.borderColor = borderColor.cgColor
        }
    }

    @IBInspectable var borderWidth: CGFloat = 2.0 {
        didSet {
            layer.borderWidth = borderWidth
        }
    }

    @IBInspectable var cornerRadius: CGFloat = 0.0 {
        didSet {
            layer.cornerRadius = cornerRadius
        }
    }

}
于 2016-10-26T08:31:46.020 に答える
6
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(20, 50, 200, 200)];

view.layer.backgroundColor = [UIColor whiteColor].CGColor;
view.layer.cornerRadius = 20.0;
view.layer.frame = CGRectInset(v.layer.frame, 20, 20);

view.layer.shadowOffset = CGSizeMake(1, 0);
view.layer.shadowColor = [[UIColor blackColor] CGColor];
view.layer.shadowRadius = 5;
view.layer.shadowOpacity = .25;

[self.view addSubview:view];
[view release];
于 2012-05-23T11:51:10.450 に答える
5
view.layer.cornerRadius = 25
view.layer.masksToBounds = true
于 2018-04-16T12:10:10.187 に答える
2

インポートしてから、これに非常に重要な行Quartzcore frameworkを設定setMaskToBoundsする必要があります。TRUE

それで:[[yourView layer] setCornerRadius:5.0f];

于 2013-02-16T09:52:18.100 に答える
0

画像を使用することもできます:

UIImage *maskingImage = [UIImage imageNamed:@"bannerBarBottomMask.png"];
CALayer *maskingLayer = [CALayer layer];
maskingLayer.frame = CGRectMake(-(self.yourView.frame.size.width - self.yourView.frame.size.width) / 2
                                , 0
                                , maskingImage.size.width
                                , maskingImage.size.height);
[maskingLayer setContents:(id)[maskingImage CGImage]];
[self.yourView.layer setMask:maskingLayer];
于 2013-01-24T06:59:09.700 に答える
0

UIView 拡張機能の使用:

extension UIView {    

func addRoundedCornerToView(targetView : UIView?)
{
    //UIView Corner Radius
    targetView!.layer.cornerRadius = 5.0;
    targetView!.layer.masksToBounds = true

    //UIView Set up boarder
    targetView!.layer.borderColor = UIColor.yellowColor().CGColor;
    targetView!.layer.borderWidth = 3.0;

    //UIView Drop shadow
    targetView!.layer.shadowColor = UIColor.darkGrayColor().CGColor;
    targetView!.layer.shadowOffset = CGSizeMake(2.0, 2.0)
    targetView!.layer.shadowOpacity = 1.0
}
}

使用法:

override func viewWillAppear(animated: Bool) {

sampleView.addRoundedCornerToView(statusBarView)

}
于 2016-05-11T06:24:32.237 に答える