Это кажется такой простой вещью, но я нигде не могу найти ее документированной: различные подклассы NSView изменяют свои существующие .frame
по-разному, когда 1) добавляются как подпредставления или 2) становятся слоистыми.
Рассмотрим код ниже:
func applicationDidFinishLaunching(_ aNotification: Notification) {
let cv = window.contentView!
let frame = cv.frame
let subview = <SomeSubclassOfNSView>(frame: cv.frame)
print("Subview has frame \(subview.frame)")
subview.wantsLayer = true
print("Subview has frame \(subview.frame)")
subview.frame = frame
print("Subview has frame \(subview.frame)")
subview.addSubview(tv)
print("Subview has frame \(subview.frame)")
subview.frame = frame
print("Subview has frame \(subview.frame)")
}
Если рассматриваемое подпредставление имеет тип:
NSView
, то его фрейм сохраняется на всем протяжении. NSTableView
, его кадр сбрасывается на .zero
при добавлении в качестве подпредставления. NSTextView
, его фрейм сбрасывается на .zero
, если для wantsLayer
установлено значение true.
Можете ли вы указать мне некоторую документацию, которая объясняет это поведение?Я сбит с толку.