3

UIBezierPath をサブクラス化して CGPoint プロパティを追加したいと思います。

@interface MyUIBezierPath : UIBezierPath
@property  CGPoint origin;
@end

私はこのように使用しています:

MyUIBezierPath * path0 = [MyUIBezierPath bezierPathWithRoundedRect:
    CGRectMake(0, 0, 20, 190) byRoundingCorners:UIRectCornerAllCorners 
    cornerRadii:CGSizeMake(10, 10)];

コンパイラは次のように文句を言います:Incompatible pointer types initializing 'MyUIBezierPath *__strong' with an expression of type 'UIBezierPath *'

bezierPathWithRoundedRectUIBezierPath を返します。

setOrigin:そのため、MyUIBezierPath のインスタンスではなく、path0 に送信できません。

bezierPathWithRoundedRectクラスのインスタンスを返すには何を変更すればよいですか?

編集:関連する質問を読んだ後、この場合(UIBezierPath機能を拡張する)サブクラス化は最善の方法ではないかもしれません。

4

2 に答える 2

0

もちろん、bezierPathWithRoundedRect は UIBezierPath クラスのメソッドであるため、UIBezierPath を返します。新しいサブクラス (MyUIBezierPath) に、明らかにその親クラスのインスタンスを作成する親クラスのメソッドと同等のメソッドを作成する必要があります。

しかし、呼び出すメソッドがないため、非常に難しいと思います。FWIK "initWithRoundedRect:byRoundingCorners:cornerRadii:" のようなメソッドなしではほとんど不可能です。

于 2012-10-31T16:00:59.200 に答える