uiscrollview の周りに境界線/影を描画したいです。追加のビューまたはスクロールビューでそこに到達できることは知っていますが、欠点を処理するのは好きではありませんが、スクロールビューに境界線を直接描画する可能性があると聞きましたそれが私が好むものです。
私は静かにiPhoneの開発に慣れていないので、どんな答えでも役に立ちます。
uiscrollview の周りに境界線/影を描画したいです。追加のビューまたはスクロールビューでそこに到達できることは知っていますが、欠点を処理するのは好きではありませんが、スクロールビューに境界線を直接描画する可能性があると聞きましたそれが私が好むものです。
私は静かにiPhoneの開発に慣れていないので、どんな答えでも役に立ちます。
スクロール ビュー (または任意の UIView) のレイヤー プロパティを使用すると、簡単に実線の境界線を取得できます...
#import <QuartzCore/QuartzCore.h>
...
myView.layer.borderWidth = 2;
myView.layer.borderColor = [UIColor blackColor].CGColor;
プロパティを設定することでレイヤーを使用してリアルタイムの影を適用することもできますがlayer.shadow*
、この手法ではパフォーマンスが低下する可能性があるため、通常は次のより複雑でパフォーマンスの高い手法を使用することを好みます。中央に透過性があり、エッジの周りに影がある PNG 画像を作成できます。9 つの異なる領域が必要です。各コーナーに 4 つ、各エッジに 4 つ、中央に完全に透明な 1x1 ピクセル領域があります。たとえば、影が画像内で 6 ピクセル伸びる場合、画像は 13x13 で、幅/高さの境界線が 6 ピクセルで、中央に 1x1 の領域があります。次に、次を使用してスケーラブルなイメージとして設定します。
newImage = [image stretchableImageWithLeftCapWidth:6 topCapHeight:6];
更新: iOS 5.0stretchableImageWithLeftCapWidth:topCapHeight:
は非推奨であるため、iOS 4.x デバイスをサポートしたい場合にのみこれを使用してください。iOS 5.0 以降のデバイスのみをサポートする場合は、代わりにこれを使用します。
newImage = [image resizableImageWithCapInsets:UIEdgeInsetsMake(6, 6, 6, 6)];
次に、画像を親ビューに配置して、スクロール ビューの領域全体を占めるようにします。スクロール可能な要素の上に影を配置したい場合 (スクロール ビューがページの残りの部分のはめ込み/背後に見えるようにするため)、透明な UIView を上に配置し、その上に影の画像を配置して、スクロール ビューに透けて見えるようにします。その後ろに。
忘れないでください:
#import <QuartzCore/QuartzCore.h>
使いたい場合
myView.layer.borderWidth = 2;
myView.layer.borderColor = [UIColor blackColor].CGColor;
UIColorからCGColorRefを取得するには、次の例を使用することもできます。
myView.layer.borderWidth = 2;
myView.layer.borderColor = [UIColor blackColor].CGColor;
myView.layout.borderColor は、UIColor を使用すると互換性のないポインター警告を生成し、境界線を変更しませんでした。
代わりに CGColorRef を使用するとうまくいきました。
CGFloat lComponents[4] = {0,0,0,1};
CGColorSpaceRef lColorSpace = CGColorSpaceCreateDeviceRGB();
myView.layer.borderColor = CGColorCreate(lColorSpace, lComponents);
CGColorSpaceRelease(lColorSpace);