2017-02-26 18 views
-1

NSView class documentationには、描画コマンドによって結果が生成されるかどうかを示すシンボルcanDrawがあります。そう、いつでもあなたは「Cannot assign to property: 'canDraw' is a get-only property」を述べビルド時のエラーを取得し、NSViewインスタンスプロパティを設定する方法

@IBOutlet weak var myView: NSView! 

その後、myView.canDraw = trueような何かを試してみてください -

宣言がvar canDraw: Bool { get }です。しかし、私のビューにNSRectを描画したい場合は、どうすればこのプロパティを変更できますか?

+0

変更しないでください。ドキュメントを読む!この瞬間にあなたが文脈を持っているかどうかを報告しています。描画を担当したい場合は、 'draw'メソッドを実装するだけです。 https://developer.apple.com/reference/appkit/nsview/1483686-draw – matt

+0

@matt私は 'draw'メソッドを実装しようとしましたが、何も変更は見られませんでした。だから私は' canDraw'は偽でした。私の悪い。私は引き分けで引き分けます。 –

+0

OK、あなた自身に尋ねる必要があります。なぜなら、 'canDraw'はfalseです。ドキュメントは、次のように述べています。「ビューオブジェクトは、非表示でも画面上に描画できます。ウィンドウ内のビュー階層(NSWindow)にアタッチされており、ウィンドウには対応するウィンドウデバイスがあります。私の推測では、あなたのビューオブジェクトはそれらの基準を満たしていないということです。 – matt

答えて

2

canDrawは読み取り専用なので変更できません。実際に問題を報告するので、読み取り専用です。制御できない、つまり、現時点で描画可能なビューであるかどうかです。

NSViewをNSViewにサブクラス化し、drawを実装することで、描画自体を担当するNSViewを実装するビューを作成します。例:

enter image description here

そのスクリーンショットに示すコードは、基本的にアプリケーションにコードのみです。ウィンドウ内のビューはMyViewで、MyViewはdrawを実装しています。

関連する問題