0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NSViewからはみ出したエリアを描画しないようにするには

Last updated at Posted at 2024-11-16

何が起こっている?

CSVファイルからグラフを描画するアプリを開発しています。

スクリーンショット 2024-11-16 18.51.27.png

CSVに記載されている数値の縦軸範囲は決まっている(0〜1,023)ので、赤いグラフは割り当てられたビュー内に収まる様になっています。
横軸はデータの数の応じて、NSScrollViewでスクロールできるようにしています。

水色と灰色のグラフはその数値から演算されたもので、結果がマイナスの値になることがあります。

グラフビューの縦軸の値は0〜1,023と決めていて、その範囲を超えるものは見えなくてもいいと言う仕様です。
ところが、このビューをスクロールして見えていない部分を表示すると...

スクリーンショット 2024-11-16 18.56.29.png

なんと、マイナスの値が下のビューまで侵食していました!
見えているエリアではマイナスの値がクリップされていて、見えていないエリアではマイナスの値が描画されているのです。

clipsToBoundsプロパティを使えば解決

clipToBoundsプロパティをtrueにすればいいことがわかりました。
例えば、グラフビューのawakeFromNib()メソッドの中で

clipsToBounds = true

とすれば解決しました。

仕様追加によりマウスドラッグでグラフを上下に動かして、演算されたグラフのクリップされた部分も見えるようにしました。
マウスドラッグした時も、やはり他のビューに侵食していました。
この問題もclipsToBoundstrueにすることで解決しました。

スクリーンショット 2024-11-16 19.06.09.png

参考になったサイト

こちらのサイトはiOSのUIViewについて記載されていましたが、macOSのNSViewにも同じプロパティがあり、同様に解決できました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?