73

paddingUIView にプロパティを追加する方法を探しています。理想的には、サブクラス化してカテゴリに入れることは避けたいと思います。使用法は次のようになります。

myview.padding = UIEdgeInsetsMake(10, 10, 10, 10);

また、内側のパディング ボックスのサイズと位置を説明するpaddingBoxを返すプロパティもあるかもしれません。CGRect

さて、そのようなカテゴリでどのように実装しますか。最初は を使用してboundsいましたが、残念ながら のサイズは のサイズにboundsリンクされておりframe(常に同じ)、座標のみが異なる場合があります。

4

7 に答える 7

53

これは通常、ビュー内に境界を設定することによって行われます。したがって、全体に 10 のインセットが必要な場合は、次のようにすることができます。

view.bounds = CGRectInset(view.frame, 10.0f, 10.0f);

境界は、フレームに対するビューの描画可能領域を定義します。したがって、これは事実上パディングを与えるはずです。その後、境界から「paddingBox」を取得できます。

お役に立てれば!:)

Swift 5+ での更新、それは

view.bounds = view.frame.insetBy(dx: 10.0, dy: 10.0);
于 2013-02-13T15:46:10.470 に答える
2

次のように、ビューのフレーム/境界を挿入できます。

    yourView.frame = yourView.frame.inset(by: UIEdgeInsets(top: .zero, left: 5.0, bottom: 5.0, right: .zero)
于 2019-06-25T03:24:48.273 に答える