2014-10-24 16 views
19

Tôi đang cố gắng thay đổi màu nền của Chế độ xem. Lớp View Controller là loại NSViewController.Màu nền Swift + NSViewController (Ứng dụng Mac)

Cách thực hiện việc này? Trong iOS UIKit (UIViewController) có self.view.backgroundColor, nhưng NSViewController không có.

Và vấn đề thứ hai là làm thế nào tôi có thể thay đổi màu của ứng dụng Thanh tiêu đề? Tôi nghĩ màu nền không ảnh hưởng đến điều đó.

Ứng dụng Mac, ngôn ngữ Swift. XCode 6.1.

Trả lời

43

Tôi đã quản lý để thay đổi màu nền của chế độ xem chính. NSViewController không có thuộc tính backgroundColor, vì vậy tôi đã sử dụng thuộc tính lớp của NSView thuộc về NSViewController. Đây là mã.

class ViewController: NSViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.view.wantsLayer = true 

    } 

    override var representedObject: AnyObject? { 
     didSet { 
     // Update the view, if already loaded. 
     } 
    } 

    override func awakeFromNib() { 
     if self.view.layer != nil { 
      let color : CGColorRef = CGColorCreateGenericRGB(1.0, 0, 0, 1.0) 
      self.view.layer?.backgroundColor = color 
     } 

    } 
} 

Nó sẽ khởi chạy trình điều khiển chế độ xem với nền đỏ.

Đối với Màu thanh tiêu đề, tôi đã tạo NSWindowController và gán nó vào bộ điều khiển cửa sổ chính từ bảng phân cảnh. Đây là mã.

class MainWindow: NSWindowController { 

    override func windowDidLoad() { 
     super.windowDidLoad() 

     super.window?.backgroundColor = NSColor(calibratedRed: 0.0, green: 1.0, blue: 0.0, alpha: 1.0) 
    } 

} 

Tôi hy vọng điều này sẽ hữu ích.

+8

Omg Mắt tôi O_O – nmdias

1

Cẩn thận: gọi setLayer: hoặc setWantsLayer: phá vỡ bất kỳ WebView nào bạn có thể có trong ứng dụng theo những cách rất sáng tạo! (Ngay cả trong các cửa sổ khác nhau ...)

Vui lòng xem câu trả lời này tại đây Best way to change the background color for an NSView.

Các vấn đề liên quan