下の画像のように角が丸いカカオシートを作る方法を知っている人はいますか?
Xcode4の丸みを帯びたシート
全体を見てきましたが、何も見つからないようです。間違った場所を探しているのか、それともこれが一般的な方法ではないのかはわかりません。何か案は?
下の画像のように角が丸いカカオシートを作る方法を知っている人はいますか?
全体を見てきましたが、何も見つからないようです。間違った場所を探しているのか、それともこれが一般的な方法ではないのかはわかりません。何か案は?
編集: OS X Lion 以降をターゲットにしている場合、この動作はさらに簡単であることがわかります[sheet setOpaque:NO]
。丸みを帯びた角を有効にするには、呼び出すだけで十分です。
この動作は非常に簡単に再現できます。シートを透明なボーダーレス ウィンドウに初期化します。
self.sheet = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 300, 300) styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered | NSTitledWindowMask defer:YES];
[self.sheet setOpaque:NO];
[self.sheet setBackgroundColor:[NSColor clearColor]];
サブビューとしてカスタム ビューを追加します。
[[self.sheet contentView] addSubview:[[IFWindowView alloc] initWithFrame:[[self.sheet contentView] frame]]];
そのカスタム ビューは、次のように描画を行う必要があります。
#define RADIUS 5.0
NSBezierPath *bezierPath = [NSBezierPath bezierPathWithRoundedRect:NSMakeRect(self.bounds.origin.x, self.bounds.origin.y + RADIUS, self.bounds.size.width, self.bounds.size.height) xRadius:RADIUS yRadius:RADIUS];
[[NSColor windowBackgroundColor] set]; // In production, use the appropriate color with alpha for transparency.
[bezierPath fill];
これを実演するためのサンプルコードを次に示します: http://d.pr/l9DB
私が知る限り、これはウィンドウのプロパティです。パネルの場合は角が直角、窓の場合は角が丸くなっています。少なくとも Mac OS ではそうなります - iOS については保証できません。