Непоследовательная обработка NSView.frame? - PullRequest
0 голосов
/ 06 июля 2019

Это кажется такой простой вещью, но я нигде не могу найти ее документированной: различные подклассы 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.

Можете ли вы указать мне некоторую документацию, которая объясняет это поведение?Я сбит с толку.

...