У меня есть три NSViews в приложении Какао, каждое подпредставление другого.
FirstNSView -> SecondNSView -> ThirdNSView
FirstNSView рисует сплошную фоновую заливку с использованием базовой графики.
SecondNSView - это контейнерное представление для ряда других представлений.
ThirdNSView рисует NSImage в свой кадр, используя следующий код в drawRect
:
[img drawAtPoint:NSMakePoint(0, 0) fromRect:NSMakeRect(0, 0, img.size.width, img.size.height) operation:NSCompositeDestinationAtop fraction:1.0];
Я использую NSCompositeDestinationAtop
, потому что это позволяет изображению почти действовать как маска для непрозрачной области img
.
Однако прозрачные области img
делают все окно прозрачным, вместо того, чтобы показывать это FirstNSView, как я и ожидал. Вот так:
Обратите внимание, что эксперименты с другими составными типами все еще приводят к этой же проблеме.
Я много читал о том, что NSView не предназначены для «наслоения», но я не уверен, что это уместно здесь. До сих пор я хорошо рисовал, используя Core Graphics на NSView и прозрачных секциях, обнажая слой «позади». Эта проблема возникла только при попытке составить это изображение.
Буду признателен за любые указания относительно того, почему это происходит, и возможного способа его решения.