2017-03-13 8 views
1

흐림 및 둥근 모서리를 얻기 위해 NSVisualEffectView을 사용하여 창을 만들었습니다. Like hereNSVisualEffectView를 사용할 때 버튼을 추가하는 방법

문제는 NSVisualEffectView 코드가있는 경우 창에 내 버튼이 표시되지 않습니다. 코드를 제거하면 버튼이 표시됩니다. 무슨 일 이니? AppDelegate.swift에서

NSVisualEffectView 코드 : 나는 스토리 보드에 일부 버튼을 추가 한

func applicationDidFinishLaunching(_ aNotification: Notification) { 
     // Insert code here to initialize your application 
     guard let window = NSApplication.shared().windows.first else { return } 
     let effect = NSVisualEffectView(frame: NSRect(x: 0, y: 0, width: 0, height: 0)) 
     effect.blendingMode = .behindWindow 
     effect.state = .active 
     effect.material = .dark 
     effect.wantsLayer = true 
     effect.layer?.cornerRadius = 15.0 
     effect.layer?.masksToBounds = true 
     window.isOpaque = false 
     window.backgroundColor = .clear 
     window.contentView = effect 
     window.titlebarAppearsTransparent = true 
     window.titleVisibility = .hidden 
    } 

. 프로젝트를 실행할 때 버튼이 표시되지 않습니다.

enter image description here

내가 applicationDidFinishLaunching(_ aNotification: Notification) 즉 모든 것을 제거

NSVisualEffectView 코드, 나는 버튼을 볼 수 있습니다.

enter image description here

사람이 무슨 일이 일어나고 있는지 말해 줄래?

답변

2

previous question에서만 수정해야한다고 생각합니다.

Storyboard를 사용하고 있는데 코드에서 NSVisualViewEffect 변수를 만드는 이유는 무엇입니까?

단추 등 (개체 라이브러리)을 검색하는 오른쪽 패널 (유틸리티 패널)에서 nsvisualeffectview을 검색하십시오.

enter image description here

로 드래그하여 기본보기 컨트롤러에 따라 크기를 조정합니다.

흐림 효과 모드를 추가하려면 "유틸리티 패널"

enter image description here

에서 "Attribites 관리자"로 이동하고 지금 window.backgroundColor = .clearwindow.isOpaque = false

func applicationDidFinishLaunching(_ aNotification: Notification) { 
     // Insert code here to initialize your application 
     guard let window = NSApplication.shared.windows.first else { return } 
     window.isOpaque = false 
     window.backgroundColor = .clear 
} 

추가 할 수있는 설정하여 버튼, 텍스트 필드를 선택하고 프로젝트를 실행하십시오. 추가 된 모든 요소를 ​​볼 수 있습니다.

도움이 되었기를 바랍니다.

+0

OMG! 고맙습니다. 나는 8 시간 동안 불안정하게 찾고 있었다! 넌 나를 구했다. – ssh

+0

@ssh 나는 그것을 듣게되어 기쁘다. – SkrewEverything

-1

window은 단추를 추가하는보기 위에 있으므로 단추가 흐리게 표시된 창 아래에 있으므로 볼 수 없습니다. 버튼과 동일한보기에 visualEffectView을 추가하지 않으시겠습니까? 버튼을 보이게하려면 버튼 아래에 삽입해야합니다.

+0

어떻게하면됩니까? 내 말은, 나는'NSVisualEffectView'를'window'에 적용하고 스토리 보드를 통해'window' 위에 버튼을 추가하는 것입니다. 그렇다면 어떻게하면 단추를 앞쪽으로 가져올 수 있습니까? 웹 디자인에 대한 경험이 있고 일반적으로 요소를 뒤 또는 앞쪽에 배치하는 데 'z- 인덱스'가 있습니다. 그러나 코코아에서 그것을하는 방법? 나는 코코아가 처음이야. 보기 아래에 단추를 어떻게 삽입 할 수 있습니까? – ssh

+0

당신은 정말로 '창'에 물건을 추가하지 않아도되고, 스토리 보드에서 그걸 할 수 있다는 것도 모릅니다.visualEffectView와 모든 버튼을'UIView'에 추가해야합니다. 그 표준 장소는'UIViewController'의'view' 속성입니다. "z- 인덱스"설정에 관해서는, 코코아에서 뷰의 모든 서브 뷰는 인덱스를 가지고 있습니다. 그러므로'self.view.insertSubview (button, at : 0)'라고 말하면서 서브 뷰 스택의 맨 아래에 뭔가를 넣을 수 있습니다. – creeperspeak

+0

나는'window' 대신'NSViewController'에 효과를 적용하려고했습니다. 아직도 나는 단추를 볼 수 없다. 그것을 어떻게 보여줄 수 있습니까? 나는 맥 개발에 새로운 사람이고 나는 – ssh