2012-02-16 19 views
3

UIViewでこれを行う方法が見つかりませんでした。 画像の背景が影で描かれています。 パディングのためのシェルフがありますか、またはこの効果を得るためにさらに多くの子オブジェクトを追加する必要がありますか?UIViewにパディングを追加するには?

enter image description here

+0

(...あなたはもちろん、事の楽しさのこの種をやって見つけると仮定した場合)座標と幅と高さを更新する? –

+0

うーん..私はそうは思わない。イメージは 'view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@" imageWithShadow.png "]];'を使用して設定されます。 イメージのフレームはビューのフレームです。 –

+0

私は、これはどの方法でも/自動的にはできないという結論に至りました。 –

答えて

3

私はこれを行うにはかなり簡単になると思いますが、あなたはそれを自分で実装する必要があります。

私はあなたの質問を理解していれば、正しくあなたのサブビューに自動的に追加パディング値を持っているしたいのですが - たとえば、ボタンのフレームのため0, 0のX/Yの値を渡すが、その実際位置は10, 10もいます。

私は完全にこれを肉付けしていないが、あなたはおそらく2つの余分なビットを持っていたUIViewサブクラスを作成する必要があるだろう - まず、それから「パディング」プロパティ(おそらくUIEdgeInset)、およびへsetFrameセッターをオーバーライドしますフレームに正しい量のパディングを自動的に追加します。たとえば、オブジェクトを作成する方法はinitWithFrame:padding:です。あなたは、あなたのUIViewサブクラスがパディングを取得するためにスーパービューを自動的に照会するようにすることさえできます。

ありスコープの多くはここにある - 私はあなたの質問に答えるために思い、からオフものはありません - しかし、それを自分で実装するだけでなく、かなり達成可能とおそらくかなり楽しいです!

xとyの原点に10を追加し、背景画像のように同じことをやっていないなぜこれほど、画像のためのフレームを取る

+1

CGRect/frameのx、y、幅、高さにマジックナンバーの値を加算/減算するのが嫌なので、私がここに公開したもののような複雑な見た目のものを置く。サブクラス化は問題の良いアプローチと思われる。 –

+0

ところで、正しいタイプは 'UIEdgeInsets'(最後は" s ")です。 –

関連する問題