iOS 13のUISegmentedControlでセグメントの色を変更する方法は?


108

A UISegmentedControlはiOS 13で新しい外観になり、セグメント化されたコントロールの色を変更する既存のコードは機能しなくなりました。

iOS 13より前のバージョンでは、tintColorとを設定して、セグメント化されたコントロールの周りの境界線、セグメント間の線、および選択したセグメントの背景色に使用できました。次に、で前景色の属性を使用して、各セグメントのタイトルの色を変更できますtitleTextAttributes

iOS 13では、tintColorは何もしません。セグメント化されたコントロールを設定して、セグメント化されたコントロールのbackgroundColor全体的な色を変更できます。しかし、選択したセグメントの背景として使用される色を変更する方法が見つかりません。テキスト属性の設定は引き続き機能します。タイトルの背景色を設定してみましたが、これはタイトルの背景にのみ影響し、選択したセグメントの残りの背景色には影響しません。

手短に言えばUISegmentedControl、iOS 13 で現在選択されているaのセグメントの背景色をどのように変更しますか?パブリックAPIを使用して、プライベートサブビュー構造を掘り下げる必要のない適切なソリューションはありますか?

iOSの13には新しいプロパティがためにありませんUISegmentedControlUIControlとの変化のいずれもUIView関連しています。

回答:


133

iOS 13b3の時点で、がselectedSegmentTintColorオンになりましたUISegmentedControl

セグメント化されたコントロールの全体的な色を変更するには、そのを使用しbackgroundColorます。

選択したセグメントの色を変更するには、を使用しますselectedSegmentTintColor

選択されていないセグメントタイトルの色/フォントを変更するにsetTitleTextAttributesは、.normal/の状態で使用しUIControlStateNormalます。

選択したセグメントタイトルの色/フォントを変更するにsetTitleTextAttributesは、.selected/の状態で使用しUIControlStateSelectedます。

画像を使用してセグメント化されたコントロールを作成する場合、画像がテンプレート画像として作成されると、セグメント化されたコントロールをtintColor使用して画像に色が付けられます。しかし、これには問題があります。をtintColor同じ色に設定するとselectedSegmentTintColor、選択したセグメントで画像が表示されなくなります。tintColorをと同じ色に設定するとbackgroundColor、選択されていないセグメントの画像は表示されなくなります。つまり、画像付きのセグメント化されたコントロールは、すべてを表示するために3つの異なる色を使用する必要があります。または、テンプレート以外の画像を使用して、を設定しないこともできますtintColor

iOS 12以前では、セグメント化されたコントロールを設定するtintColorか、アプリの全体的な色合いに依存します。


境界のないセグメントコントローラを設定するにはどうすればよいですか?iOS 13にはこの設定がありません。以前は、tintcolorを設定するだけでボーダーレスセグメントコントロールを取得できました。
Deepak Sharma

すべてのセグメントカラーを見つけることができるように、ボーダーカラーなどを追加してください。ここでは、カラー関連の問題が解決されています。何と言うの?:)
Yogesh Patel

1
@YogeshPatel境界線の色はどうですか?iOS 13およびiOS 12には境界線の色はありませんtintColor。これは、回答ですでに説明されているように設定されています。
rmaddy

@rmaddyこれを設定しました[segmentedControl.layer setBorderColor:[[UIColor whiteColor] CGColor]]; [segmentedControl.layer setBorderWidth:0.5]; それは、iOS 13で私に国境や境界線の色を与える
ヨーゲッシュパテル

1
ああ、その境界。これは、セグメント化されたコントロールだけでなく、すべてのビューに適用されます。それは元の質問とこの回答の範囲を超えています。あなたのコメントで十分です。
rmaddy

47

Xcode 11ベータ3以降

selectedSegmentTintColorプロパティがありますUISegmentedControl

rmaddyの回答を見る


iOS 12の外観に戻すには

選択したセグメントの色に色を付けることができませんでした。うまくいけば、次のベータ版で修正されるでしょう。

選択した状態の背景画像の設定は、通常の状態の背景画像を設定しないと機能しません(すべてのiOS 13スタイルが削除されます)

しかし、私はそれをiOS 12の外観に戻すことができました(または十分に近い場合、角の半径を小さいサイズに戻すことができませんでした)。

これは理想的ではありませんが、明るい白いセグメント化されたコントロールは、アプリで少し場違いに見えます。

UIImage(color:)コードベースの拡張メソッドであることに気づかなかった。しかし、それを実装するためのコードはWebにある)

extension UISegmentedControl {
    /// Tint color doesn't have any effect on iOS 13.
    func ensureiOS12Style() {
        if #available(iOS 13, *) {
            let tintColorImage = UIImage(color: tintColor)
            // Must set the background image for normal to something (even clear) else the rest won't work
            setBackgroundImage(UIImage(color: backgroundColor ?? .clear), for: .normal, barMetrics: .default)
            setBackgroundImage(tintColorImage, for: .selected, barMetrics: .default)
            setBackgroundImage(UIImage(color: tintColor.withAlphaComponent(0.2)), for: .highlighted, barMetrics: .default)
            setBackgroundImage(tintColorImage, for: [.highlighted, .selected], barMetrics: .default)
            setTitleTextAttributes([.foregroundColor: tintColor, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 13, weight: .regular)], for: .normal)
            setDividerImage(tintColorImage, forLeftSegmentState: .normal, rightSegmentState: .normal, barMetrics: .default)
            layer.borderWidth = 1
            layer.borderColor = tintColor.cgColor
        }
    }
}

上記のコードの効果を示す画像


これは良い回避策になるでしょう。私はまだこれを試す機会がありませんでしたが、これにsetTitleTextAttributesは選択したセグメントのタイトルを白色にするための呼び出しも必要ですか?
rmaddy

うーん、そうであるように見えますが、一見そうではありません。私はそのコード使用状況atmにアクセスできませんが、左側の画像はそのコードで作成されています。
ジョナサン。

8
stackoverflow.com/a/33675160/5790492 UIImageのため(色:)拡張子。
Nik Kov

1
UIImage拡張機能を追加するといいでしょう。このようにすると、答えは完全ではありませんiho
FredFlinstone

1
@VityaShurapovそのそれは両方の強調表示されますときのためにそれを設定する、選択は、それが値が新しい状態を作成するために結合されることを意味し、渡された状態ではなく、オプションセットの配列、ではありません。
ジョナサン。

36

IOS 13およびSwift 5.0(Xcode 11.0)セグメント制御100%機能

ここに画像の説明を入力してください

ここに画像の説明を入力してください

 if #available(iOS 13.0, *) {
      yoursegmentedControl.backgroundColor = UIColor.black
      yoursegmentedControl.layer.borderColor = UIColor.white.cgColor
      yoursegmentedControl.selectedSegmentTintColor = UIColor.white
      yoursegmentedControl.layer.borderWidth = 1

      let titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]    
      yoursegmentedControl.setTitleTextAttributes(titleTextAttributes, for:.normal)

      let titleTextAttributes1 = [NSAttributedString.Key.foregroundColor: UIColor.black]
      yoursegmentedControl.setTitleTextAttributes(titleTextAttributes1, for:.selected)
  } else {
              // Fallback on earlier versions
}

7
背景を白に設定してみましたか?私にとっては灰色がかっています
Ronit

@ItanHantどのxcodeとSwift言語を使用していますか?
Maulik Patel

@Ronit ofcourse !! 試してみるが、
plzは

Swift 5、xcode 11.3!それはそれが望むものを示しています!私が欲しいものではありません:)
Itan Hant

15

私は回避策を試しましたが、それは私にとってはうまくいきます。これがObjective-Cバージョンです。

@interface UISegmentedControl (Common)
- (void)ensureiOS12Style;
@end
@implementation UISegmentedControl (Common)
- (void)ensureiOS12Style {
    // UISegmentedControl has changed in iOS 13 and setting the tint
    // color now has no effect.
    if (@available(iOS 13, *)) {
        UIColor *tintColor = [self tintColor];
        UIImage *tintColorImage = [self imageWithColor:tintColor];
        // Must set the background image for normal to something (even clear) else the rest won't work
        [self setBackgroundImage:[self imageWithColor:self.backgroundColor ? self.backgroundColor : [UIColor clearColor]] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
        [self setBackgroundImage:tintColorImage forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
        [self setBackgroundImage:[self imageWithColor:[tintColor colorWithAlphaComponent:0.2]] forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
        [self setBackgroundImage:tintColorImage forState:UIControlStateSelected|UIControlStateSelected barMetrics:UIBarMetricsDefault];
        [self setTitleTextAttributes:@{NSForegroundColorAttributeName: tintColor, NSFontAttributeName: [UIFont systemFontOfSize:13]} forState:UIControlStateNormal];
        [self setDividerImage:tintColorImage forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
        self.layer.borderWidth = 1;
        self.layer.borderColor = [tintColor CGColor];
    }
}

- (UIImage *)imageWithColor: (UIColor *)color {
    CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);
    UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return theImage;
}
@end

2
CGRectMake(0.0f, 0.0f, 1.0f, 1.0f)Xcode 11ベータでのテストから、それが動作するかどうかはわかりませんrectが、セグメント化されたコントロールの境界と同じサイズである必要がありました。
・クール

2
iOS13ベータ6以降、ティントカラーは選択されたボタンに表示されなかったため、次の行を追加する必要がありました。
Peter Johnson、

これを使用しようとすると[[UISegmentedControl appearance] ensureiOS12Style]、例外が発生します。何が起こっているのでしょうか? Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSMethodSignature getArgumentTypeAtIndex:]: index (2) out of bounds [0, 1]'
Jeremy Hicks

13

Xcode 11ベータ3以降

selectedSegmentTintColorプロパティがありますUISegmentedControl

@rmaddyありがとうございます!


Xcode 11ベータ版およびベータ2版の元の回答

プライベートサブビュー構造を掘り下げる必要がない、パブリックAPIを使用した適切なソリューションはありますか?

Xcode 11.0ベータでは、基本的に、すべての州のすべての背景画像を、角が丸く、透明度があり、自分で再描画する必要があるため、ルールに従って行うのは難しいようですresizableImage(withCapInsets:)。たとえば、次のようなカラー画像を生成する必要があります。
ここに画像の説明を入力してください

したがって、今のところ、サブビューを掘り下げてみましょう。

class TintedSegmentedControl: UISegmentedControl {

    override func layoutSubviews() {
        super.layoutSubviews()

        if #available(iOS 13.0, *) {
            for subview in subviews {
                if let selectedImageView = subview.subviews.last(where: { $0 is UIImageView }) as? UIImageView,
                    let image = selectedImageView.image {
                    selectedImageView.image = image.withRenderingMode(.alwaysTemplate)
                    break
                }
            }
        }
    }
}

このソリューションは、次のように選択範囲にティントカラーを正しく適用します。 ここに画像の説明を入力してください


1
時間がなくなったので授与されますが、プライベート階層を掘り下げることを含まないソリューションが見つかるのが望ましいです:)
Jonathan。

@ジョナサン。ありがとうございました。あなたいったんので:あなたはすでに、最も近いソリューションは、階層を見て関与しないだsetBackgroundImageために.normal、あなたは(他の州を含む他のすべての画像を設定する必要がsetDividerImage)、おそらくいくつかと、UIBezierPathそしてresizableImage(withCapInsets:)私たちはiOSの13のデザインをしたい場合は、それが過度に複雑になりれ、こちらです。
・クール

うん、理想的にはそれはベータ版
ジョナサンで

3
これは、iOS 13b3では不要になりました。にselectedSegmentTintColorプロパティがありますUISegmentedControl
rmaddy

11

@Ilahi Charfeddine回答のSwiftバージョン:

if #available(iOS 13.0, *) {
   segmentedControl.setTitleTextAttributes([.foregroundColor: UIColor.white], for: .selected)
   segmentedControl.selectedSegmentTintColor = UIColor.blue
} else {
   segmentedControl.tintColor = UIColor.blue
}

10
if (@available(iOS 13.0, *)) {

    [self.segmentedControl setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor whiteColor], NSFontAttributeName: [UIFont systemFontOfSize:13]} forState:UIControlStateSelected];
    [self.segmentedControl setSelectedSegmentTintColor:[UIColor blueColor]];

} else {

[self.segmentedControl setTintColor:[UIColor blueColor]];}

7

iOS13 UISegmentController

使い方:

segment.setOldLayout(tintColor: .green)

extension UISegmentedControl
{
    func setOldLayout(tintColor: UIColor)
    {
        if #available(iOS 13, *)
        {
            let bg = UIImage(color: .clear, size: CGSize(width: 1, height: 32))
             let devider = UIImage(color: tintColor, size: CGSize(width: 1, height: 32))

             //set background images
             self.setBackgroundImage(bg, for: .normal, barMetrics: .default)
             self.setBackgroundImage(devider, for: .selected, barMetrics: .default)

             //set divider color
             self.setDividerImage(devider, forLeftSegmentState: .normal, rightSegmentState: .normal, barMetrics: .default)

             //set border
             self.layer.borderWidth = 1
             self.layer.borderColor = tintColor.cgColor

             //set label color
             self.setTitleTextAttributes([.foregroundColor: tintColor], for: .normal)
             self.setTitleTextAttributes([.foregroundColor: UIColor.white], for: .selected)
        }
        else
        {
            self.tintColor = tintColor
        }
    }
}
extension UIImage {
    convenience init(color: UIColor, size: CGSize) {
        UIGraphicsBeginImageContextWithOptions(size, false, 1)
        color.set()
        let ctx = UIGraphicsGetCurrentContext()!
        ctx.fill(CGRect(origin: .zero, size: size))
        let image = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext()

        self.init(data: image.pngData()!)!
    }
}

1
これは私のために働いた唯一のアプローチです-背景画像。selectedSegmentTintColorが何らかの理由で機能しませんでした。
DenNukem

7

XCODE 11.1およびiOS 13

@Jigar Darjiの回答に基づいていますが、より安全な実装です。

まず、失敗する便利なイニシャライザを作成します。

extension UIImage {

convenience init?(color: UIColor, size: CGSize) {
    UIGraphicsBeginImageContextWithOptions(size, false, 1)
    color.set()
    guard let ctx = UIGraphicsGetCurrentContext() else { return nil }
    ctx.fill(CGRect(origin: .zero, size: size))
    guard
        let image = UIGraphicsGetImageFromCurrentImageContext(),
        let imagePNGData = image.pngData()
        else { return nil }
    UIGraphicsEndImageContext()

    self.init(data: imagePNGData)
   }
}

次に、UISegmentedControlを拡張します。

extension UISegmentedControl {

func fallBackToPreIOS13Layout(using tintColor: UIColor) {
    if #available(iOS 13, *) {
        let backGroundImage = UIImage(color: .clear, size: CGSize(width: 1, height: 32))
        let dividerImage = UIImage(color: tintColor, size: CGSize(width: 1, height: 32))

        setBackgroundImage(backGroundImage, for: .normal, barMetrics: .default)
        setBackgroundImage(dividerImage, for: .selected, barMetrics: .default)

        setDividerImage(dividerImage,
                        forLeftSegmentState: .normal,
                        rightSegmentState: .normal, barMetrics: .default)

        layer.borderWidth = 1
        layer.borderColor = tintColor.cgColor

        setTitleTextAttributes([.foregroundColor: tintColor], for: .normal)
        setTitleTextAttributes([.foregroundColor: UIColor.white], for: .selected)
    } else {
        self.tintColor = tintColor
    }
  }
}

パーフェクト!ありがとうございました!
Senocico Stelian

5

これは、Xamarin.iOS(C#)に対するJonathan。の私の見解ですが、画像サイズの修正が含まれています。Colin Blakeの回答に対するCœurのコメントと同様に、分割器を除くすべての画像をセグメント化されたコントロールのサイズにしました。仕切りはセグメントの高さの1倍です。

public static UIImage ImageWithColor(UIColor color, CGSize size)
{
    var rect = new CGRect(0, 0, size.Width, size.Height);
    UIGraphics.BeginImageContext(rect.Size);
    var context = UIGraphics.GetCurrentContext();
    context.SetFillColor(color.CGColor);
    context.FillRect(rect);
    var image = UIGraphics.GetImageFromCurrentImageContext();
    UIGraphics.EndImageContext();
    return image;
}

// https://stackoverflow.com/a/56465501/420175
public static void ColorSegmentiOS13(UISegmentedControl uis, UIColor tintColor, UIColor textSelectedColor, UIColor textDeselectedColor)
{
    if (!UIDevice.CurrentDevice.CheckSystemVersion(13, 0))
    {
        return;
    }

    UIImage image(UIColor color)
    {
        return ImageWithColor(color, uis.Frame.Size);
    }

    UIImage imageDivider(UIColor color)
    {
        return ImageWithColor(color, 1, uis.Frame.Height);
    }

    // Must set the background image for normal to something (even clear) else the rest won't work
    //setBackgroundImage(UIImage(color: backgroundColor ?? .clear), for: .normal, barMetrics: .default)
    uis.SetBackgroundImage(image(UIColor.Clear), UIControlState.Normal, UIBarMetrics.Default);

    // setBackgroundImage(tintColorImage, for: .selected, barMetrics: .default)
    uis.SetBackgroundImage(image(tintColor), UIControlState.Selected, UIBarMetrics.Default);

    // setBackgroundImage(UIImage(color: tintColor.withAlphaComponent(0.2)), for: .highlighted, barMetrics: .default)
    uis.SetBackgroundImage(image(tintColor.ColorWithAlpha(0.2f)), UIControlState.Highlighted, UIBarMetrics.Default);

    // setBackgroundImage(tintColorImage, for: [.highlighted, .selected], barMetrics: .default)
    uis.SetBackgroundImage(image(tintColor), UIControlState.Highlighted | UIControlState.Selected, UIBarMetrics.Default);

    // setTitleTextAttributes([.foregroundColor: tintColor, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 13, weight: .regular)], for: .normal)
    // Change: support distinct color for selected/de-selected; keep original font
    uis.SetTitleTextAttributes(new UITextAttributes() { TextColor = textDeselectedColor }, UIControlState.Normal); //Font = UIFont.SystemFontOfSize(13, UIFontWeight.Regular)
    uis.SetTitleTextAttributes(new UITextAttributes() { TextColor = textSelectedColor, }, UIControlState.Selected); //Font = UIFont.SystemFontOfSize(13, UIFontWeight.Regular)

    // setDividerImage(tintColorImage, forLeftSegmentState: .normal, rightSegmentState: .normal, barMetrics: .default)
    uis.SetDividerImage(imageDivider(tintColor), UIControlState.Normal, UIControlState.Normal, UIBarMetrics.Default);

    //layer.borderWidth = 1
    uis.Layer.BorderWidth = 1;

    //layer.borderColor = tintColor.cgColor
    uis.Layer.BorderColor = tintColor.CGColor;
}

3

次のメソッドを実装できます

extension UISegmentedControl{
    func selectedSegmentTintColor(_ color: UIColor) {
        self.setTitleTextAttributes([.foregroundColor: color], for: .selected)
    }
    func unselectedSegmentTintColor(_ color: UIColor) {
        self.setTitleTextAttributes([.foregroundColor: color], for: .normal)
    }
}

使用法コード

segmentControl.unselectedSegmentTintColor(.white)
segmentControl.selectedSegmentTintColor(.black)

0

上記の答えは素晴らしいですが、それらのほとんどは、選択したセグメント内のテキストの色が間違っています。UISegmentedControliOS 13以前のiOS 13デバイスで使用できるサブクラスを作成し、iOS 13以前のデバイスと同じようにtintColorプロパティを使用します。

    class LegacySegmentedControl: UISegmentedControl {
        private func stylize() {
            if #available(iOS 13.0, *) {
                selectedSegmentTintColor = tintColor
                let tintColorImage = UIImage(color: tintColor)
                setBackgroundImage(UIImage(color: backgroundColor ?? .clear), for: .normal, barMetrics: .default)
                setBackgroundImage(tintColorImage, for: .selected, barMetrics: .default)
                setBackgroundImage(UIImage(color: tintColor.withAlphaComponent(0.2)), for: .highlighted, barMetrics: .default)
                setBackgroundImage(tintColorImage, for: [.highlighted, .selected], barMetrics: .default)
                setTitleTextAttributes([.foregroundColor: tintColor!, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 13, weight: .regular)], for: .normal)

                setDividerImage(tintColorImage, forLeftSegmentState: .normal, rightSegmentState: .normal, barMetrics: .default)
                layer.borderWidth = 1
                layer.borderColor = tintColor.cgColor

// Detect underlying backgroundColor so the text color will be properly matched

                if let background = backgroundColor {
                    self.setTitleTextAttributes([.foregroundColor: background, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 13, weight: .regular)], for: .selected)
                } else {
                    func detectBackgroundColor(of view: UIView?) -> UIColor? {
                        guard let view = view else {
                            return nil
                        }
                        if let color = view.backgroundColor, color != .clear {
                            return color
                        }
                        return detectBackgroundColor(of: view.superview)
                    }
                    let textColor = detectBackgroundColor(of: self) ?? .black

                    self.setTitleTextAttributes([.foregroundColor: textColor, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 13, weight: .regular)], for: .selected)
                }
            }
        }

        override func tintColorDidChange() {
            super.tintColorDidChange()
            stylize()
        }
    }

    fileprivate extension UIImage {
        public convenience init?(color: UIColor, size: CGSize = CGSize(width: 1, height: 1)) {
          let rect = CGRect(origin: .zero, size: size)
          UIGraphicsBeginImageContextWithOptions(rect.size, false, 0.0)
          color.setFill()
          UIRectFill(rect)
          let image = UIGraphicsGetImageFromCurrentImageContext()
          UIGraphicsEndImageContext()

          guard let cgImage = image?.cgImage else { return nil }
          self.init(cgImage: cgImage)
        }
    }

tintColorDidChangeメソッドを使用して、セグメントビューまたは基になるビューstylizetintColorプロパティが変更されるたびにメソッドが呼び出されるようにします。これは、iOSで推奨される動作です。

結果: ここに画像の説明を入力してください


-2

角を丸くしたくない場合に備えて、ジョナサンの答えを少し拡張します

extension UISegmentedControl {
    /// Tint color doesn't have any effect on iOS 13.
    func ensureiOS12Style(roundCorner: Bool = true) {
        if #available(iOS 13, *) {
            let tintColorImage = UIImage(color: tintColor)
            // Must set the background image for normal to something (even clear) else the rest won't work
            setBackgroundImage(UIImage(color: backgroundColor ?? .clear), for: .normal, barMetrics: .default)
            setBackgroundImage(tintColorImage, for: .selected, barMetrics: .default)
            setBackgroundImage(UIImage(color: tintColor.withAlphaComponent(0.2)), for: .highlighted, barMetrics: .default)
            setBackgroundImage(tintColorImage, for: [.highlighted, .selected], barMetrics: .default)
            setTitleTextAttributes([.foregroundColor: tintColor, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 13, weight: .regular)], for: .normal)
            setDividerImage(tintColorImage, forLeftSegmentState: .normal, rightSegmentState: .normal, barMetrics: .default)

            if !roundCorner {
                layer.masksToBounds = false

                let borderView = UIView()
                borderView.layer.borderWidth = 1
                borderView.layer.borderColor = UIColor.black.cgColor
                borderView.isUserInteractionEnabled = false
                borderView.translatesAutoresizingMaskIntoConstraints = false

                addSubview(borderView)

                NSLayoutConstraint(item: borderView, attribute: .centerX, relatedBy: .equal, toItem: self, attribute: .centerX, multiplier: 1, constant: 0).isActive = true
                NSLayoutConstraint(item: borderView, attribute: .centerY, relatedBy: .equal, toItem: self, attribute: .centerY, multiplier: 1, constant: 0).isActive = true
                NSLayoutConstraint(item: borderView, attribute: .width, relatedBy: .equal, toItem: self, attribute: .width, multiplier: 1, constant: 0).isActive = true
                NSLayoutConstraint(item: borderView, attribute: .height, relatedBy: .equal, toItem: self, attribute: .height, multiplier: 1, constant: 0).isActive = true
            }
        }
    }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.