[解決済み] UIEdgeInsetsMakeはどのように機能するのですか?
質問事項
アプリを作っているのですが、その中で
UIEdgeInsetsMake
に対して
resizableImageWithCapInsets
が、具体的にどのように動作するのかがわからない。
UIEdgeInsetsMake
は4つの引数を持ちます。
- トップ
- 左
- 下
- 右
でも、floatだから画像に設定する方法がわからない!ありがとうございます。:D
どのように解決するのですか?
ドキュメントによると
このメソッドは、画像にキャップインセットを追加したり、画像の既存のキャップインセットを変更するために使用します。どちらの場合も、新しい画像が返され、元の画像はそのまま残ります。
画像の拡大・縮小の際、キャップで覆われた領域は拡大・縮小されません。代わりに、各方向のキャップで覆われていないピクセル領域が、左から右、上から下へと並べられ、画像のサイズが変更されます。この手法は、可変幅のボタンを作成する際によく使われます。角の丸みはそのままに、中央の領域が必要に応じて拡大・縮小されます。最高のパフォーマンスを得るには、1x1ピクセルの大きさのタイル状の領域を使用してください。
つまり、伸縮不可にしたいピクセル数だけを
UIEdgeInsetsMake
関数を使用します。
例えば、21x50ポイントの画像(標準画質では21x50ピクセル、Retina "@2x"画質では42x100ピクセル)があり、この画像を水平方向に伸縮させ、左と右の10ポイントはそのままで、真ん中の1ポイント幅の帯のみを伸縮させたいとします。その場合、次のようにします。
UIEdgeInsetsMake(0,10,0,10)
.
浮動小数点数であることは気にしないでください(たとえばサブピクセルサイズの変更には便利ですが、実際にはおそらく整数(または小数部のない浮動小数点数)しか使わないでしょう)。
これはiOS5+限定の方法で、iOS5以前では利用できないので注意しましょう。もしiOS5以前のSDKを使用している場合は
stretchableImageWithLeftCapWidth:topCapHeight:
の代わりに
[EDIT]いくつかのヒント
のフィールドの順番を覚えていないため、以前から使用しています。
UIEdgeInsets
構造体の引数は、どのような順番で
UIEdgeInsetsMake
関数 - 私は
という構文があります。
このように
UIEdgeInsets insets = { .left = 50, .right = 50, .top = 10, .bottom = 10 };
または、明示的なキャストが必要な場合。
UIImage* rzImg = [image resizableImageWithCapInsets:(UIEdgeInsets){
.left = 50, .right = 50,
.top = 10, .bottom = 10
}];
特に、異なるボーダー/ディレクションを混在させないようにすることが、より読みやすいと思います
関連
-
[解決済み】Xcode - 'NSUnknownKeyException', reason: ... this class is not key value coding-compliant for the key X" エラーの修正方法とは?
-
[解決済み】Xcode 10.2.1 Command PhaseScriptExecutionが0以外の終了コードで失敗した。
-
[解決済み] Xcode 4のBundle creator OS Type code ?
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み] カスタムオブジェクトを含むNSMutableArrayをソートするにはどうすればよいですか?
-
[解決済み] UITableViewの選択を無効にするにはどうすればよいですか?
-
[解決済み] 制約条件の変更をアニメーションで表現するには?
-
[解決済み] iOS 8 UITableViewのセパレータインセット0が機能しない件
-
[解決済み】UIScrollView Scrollable Content Size Ambiguity
-
[解決済み] iOSです。オートレイアウトで複数行のUILabelを使用する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】印刷します。エントリ, ":CFBundleIdentifier", Does Not Exist
-
[解決済み] 'strcmp' はこのスコープで宣言されていません。
-
[解決済み] Xcode コマンド /usr/bin/codesign は終了コード 1 で失敗しました : errSecInternalComponent
-
[解決済み] Int 型のインデックスを持つ [AnyObject]? の値を添え字として使用できません。
-
[解決済み] キャッチできない例外 'NSInvalidArgumentException', reason: '-[_.AppDelegate add:]: unrecognized selector' により、アプリを終了する。
-
[解決済み] 指定されたホスト名を持つサーバーが見つからなかった
-
[解決済み] Xcodeで実行ファイルが無効なエンタイトルメントで署名されてしまう
-
[解決済み] iOS Swift 3 - UIDatePicker
-
[解決済み] Objective C - 値で渡す、参照で渡す
-
[解決済み] ナビゲーションアイテムのタイトルカラーを変更する方法