Отсечение закругленных углов в NSScrollView - PullRequest
4 голосов
/ 14 января 2012

У меня есть простой пользовательский подкласс NSWindow без полей, который имеет закругленную прямоугольную форму.

В представлении содержимого этого окна я добавил NSScrollView.

Как получитьNSScrollView, чтобы обрезать его представление документа в форме прямоугольника с закругленными углами NSWindow?

Я попытался создать подкласс NSScrollView, переопределив drawRect: и добавив обтравочный контур перед вызовом super.Я также попытался создать подкласс для представления документа и представления клипа с помощью одной и той же техники, но я не могу заставить его обрезать.

Кстати, это на Lion с упругой прокруткой.

Ответы [ 2 ]

4 голосов
/ 03 апреля 2012

После долгих потрясений я только что обнаружил, что NSScrollView можно сделать так, чтобы он имел закругленные углы, просто придав ему слой подложки и установив радиус угла этого слоя при условии , вы также сделаете то же самое с ним. внутренний NSClipView. Требуются оба, что теперь имеет смысл, поскольку именно представление клипа фактически обеспечивает видимое окно в представлении документа NSScrollView.

NSScrollView * scrollView = ...;

// Give the NSScrollView a backing layer and set it's corner radius.
[scrollView setWantsLayer:YES];
[scrollView.layer setCornerRadius:10.0f];

// Give the NSScrollView's internal clip view a backing layer and set it's corner radius.
[scrollView.contentView setWantsLayer:YES];
[scrollView.contentView.layer setCornerRadius:10.0f];
0 голосов
/ 19 апреля 2017

Еще лучше ИМО:

scrollView.wantsLayer = true
scrollView.layer?.masksToBounds = true
scrollView.contentView.wantsLayer = true
scrollView.contentView.layer?.masksToBounds = true
...