macOS 14 und „ausufernde Views“

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • macOS 14 und „ausufernde Views“

    Moin!

    Diesmal nur als Hinweis für andere - die vielleicht wie ich nicht vorausschauend in die AppKit Release Notes von macOS 14 „Sonoma“ geschaut haben:

    Ich habe bisher in der drawRect-Methode einer Custom View innerhalb des übergebenen Rechtecks gezeichnet - weil eigentlich nur dieses „dirty“ ist - und mich nicht um die Bounds gekümmert. Erfolgreich seit 15 Jahren.

    Das Ganze bricht mit macOS 14, weil besagtes Rechteck nun über die Bounds hinaus gehen kann und der Default von Views nun clipToBounds = false ist. Die Effekte können optisch interessant sein, wenn man z. B. rect mit einer Farbe füllt.

    Apple schrieb:

    • Filling the dirty rect of a view inside of -drawRect. A fairly common pattern is to simply rect fill the dirty rect passed into an override of NSView.draw(). The dirty rect can now extend outside of your view’s bounds. This pattern can be adjusted by filling the bounds instead of the dirty rect, or by setting clipsToBounds = true.
    Leicht zu beheben, aber die Verwirrung war erstmal gross … und ich habe mal wieder keine Idee, warum Apple diesen Default wählt.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Ich bin zwar noch nicht bei macOS 14 aber ähnliche Effekte habe ich auch schon wo anders. Z.B. ein NSTableView wo beim Doppelclick nach Umstieg auf ein neueres OS/SDK auf einmal die Zellenhöhe auf "winzig" schrumpft. Klar, ich habe ja auch -[NSTableView tableView:heightOfRow:] überschrieben. Aber dort habe ich bisher mit

    Quellcode

    1. [columnCell cellSizeForBounds:NSMakeRect(0, 0, [column width], FLT_MAX)]
    die Höhe einer Textzelle abfragen können. Wobei die Schriftgröße berücksichtigt wurde. Jetzt gibts winzige Werte...
    Oder ein ganz anderer Effekt: bisher konnte ich TextEdit auch zum Editieren großer C-Source-Files verwenden. Inzwischen hakelt und ruckelt das beim Scrollen weil die Zeilenpositionen nicht immer stimmen.
    Apple verbessert halt dauernd etwas, damit wir immer wieder hinterherhecheln müssen, wenn wir nicht dumme User sein wollen sondern auch programmieren :)
    Danke für den Tip. Vielleicht stolpere ich da auch mal drüber.