私のログインビューには、 「サインイン…」というメッセージが表示されたサブビューがありますUIActivityView
。UILabel
このサブビューには、丸められていないコーナーがあります。どうすればそれらを丸くすることができますか?
私のxib内でそれを行う方法はありますか?
私のログインビューには、 「サインイン…」というメッセージが表示されたサブビューがありますUIActivityView
。UILabel
このサブビューには、丸められていないコーナーがあります。どうすればそれらを丸くすることができますか?
私のxib内でそれを行う方法はありますか?
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.
インターフェイス ビルダーのユーザー定義ランタイム属性機能を使用して、キー パスを値に設定することもできlayer.cornerRadius
ます。ただし、必ずQuartzCore
ライブラリを含めてください。
このトリックは、layer.borderWidth の設定にも機能しますがlayer.borderColor
、これは a ではないことが予想されるため、機能しCGColor
ませんUIColor
。
これらのパラメーターは実行時に評価されるため、ストーリーボードで効果を確認することはできません。
Ed Marty が行ったものとは異なるアプローチ:
#import <QuartzCore/QuartzCore.h>
[v.layer setCornerRadius:25.0f];
[v.layer setMasksToBounds:YES];
IB からすべてのオブジェクトをロードするには、setMasksToBounds が必要です...ビューが丸くなるという問題が発生しましたが、IB からのオブジェクトがありませんでした:/
これで修正されました= Dお役に立てば幸いです!
このブログ投稿で説明されているように、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];
}
それについてのクールな部分は、丸めたい角を選択できることです.
最初にヘッダーファイルをインポートする必要があります<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
。そうしないと、効果が表示されない場合があります。
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
}
}
}
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];
view.layer.cornerRadius = 25
view.layer.masksToBounds = true
インポートしてから、これに非常に重要な行Quartzcore framework
を設定setMaskToBounds
する必要があります。TRUE
それで:[[yourView layer] setCornerRadius:5.0f];
画像を使用することもできます:
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];
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)
}