|
9 | 9 | import Foundation
|
10 | 10 | import ScreenSaver
|
11 | 11 |
|
12 |
| -let SCREEN_W = NSScreen.main?.frame.size.width |
13 |
| -let SCREEN_H = NSScreen.main?.frame.size.height |
14 |
| - |
15 | 12 | final class SaverView: ScreenSaverView {
|
16 | 13 |
|
17 | 14 | let jikeY = NSColor(red:1, green:0.894, blue:0.066, alpha:1.00) // FFE411
|
18 | 15 |
|
| 16 | + let ratio: CGFloat = 0.618 |
| 17 | + |
19 | 18 | let canDoText = NSTextField()
|
20 | 19 | let daliyText = NSTextField()
|
21 |
| - let dateNumText = NSTextField() |
22 | 20 | let sdfText = NSTextField()
|
23 | 21 |
|
| 22 | + let dateNumText = NSView() |
| 23 | + let dateNum_h = NSTextField() |
| 24 | + let dateNum_m = NSTextField() |
| 25 | + let dateNum_s = NSTextField() |
| 26 | + |
| 27 | + let lineOne = NSView() |
| 28 | + let lineTwo = NSView() |
| 29 | + |
24 | 30 | override init!(frame: NSRect, isPreview: Bool) {
|
25 | 31 | super.init(frame: frame, isPreview: isPreview)
|
26 | 32 |
|
27 | 33 |
|
28 | 34 |
|
29 | 35 | }
|
30 | 36 |
|
31 |
| - func initUI () { |
32 |
| - |
33 |
| - canDoText.frame = NSRect.init(x: 0, y: SCREEN_H! - 280, width: SCREEN_W!, height: 80) |
34 |
| - canDoText.isEditable = false |
35 |
| - canDoText.isBordered = false |
36 |
| - canDoText.drawsBackground = false |
37 |
| - canDoText.font = NSFont.systemFont(ofSize: 60) |
38 |
| - canDoText.textColor = jikeY |
39 |
| - canDoText.alignment = .center |
40 |
| - self.addSubview(canDoText) |
41 |
| - |
42 |
| - daliyText.frame = NSRect.init(x: 0, y: SCREEN_H! - 340, width: SCREEN_W!, height: 50) |
43 |
| - daliyText.isEditable = false |
44 |
| - daliyText.isBordered = false |
45 |
| - daliyText.drawsBackground = false |
46 |
| - daliyText.font = NSFont.systemFont(ofSize: 30) |
47 |
| - daliyText.textColor = jikeY |
48 |
| - daliyText.alignment = .center |
49 |
| - self.addSubview(daliyText) |
50 |
| - |
51 |
| - dateNumText.frame = NSRect.init(x: (SCREEN_W! - 770) / 2 + 10, y: SCREEN_H! - 520, width: 770, height: 200) |
52 |
| - dateNumText.isEditable = false |
53 |
| - dateNumText.isBordered = false |
54 |
| - dateNumText.drawsBackground = false |
55 |
| - dateNumText.font = NSFont.systemFont(ofSize: 180) |
56 |
| - dateNumText.textColor = jikeY |
57 |
| - dateNumText.alignment = .left |
58 |
| - self.addSubview(dateNumText) |
59 |
| - |
60 |
| - let lineOne = NSView.init(frame: NSRect.init(x: 300, y: SCREEN_H! - 550, width: SCREEN_W! - 600, height: 4)) |
61 |
| - lineOne.wantsLayer = true |
62 |
| - lineOne.layer?.setNeedsDisplay() |
63 |
| - lineOne.layer?.backgroundColor = jikeY.cgColor |
64 |
| - self.addSubview(lineOne) |
65 |
| - |
66 |
| - let lineTwo = NSView.init(frame: NSRect.init(x: 300, y: SCREEN_H! - 555, width: SCREEN_W! - 600, height: 1)) |
67 |
| - lineTwo.wantsLayer = true |
68 |
| - lineTwo.layer?.setNeedsDisplay() |
69 |
| - lineTwo.layer?.backgroundColor = jikeY.cgColor |
70 |
| - self.addSubview(lineTwo) |
71 |
| - |
72 |
| - sdfText.frame = NSRect.init(x: 300, y: SCREEN_H! - 800, width: SCREEN_W! - 600, height: 200) |
73 |
| - sdfText.isEditable = false |
74 |
| - sdfText.isBordered = false |
75 |
| - sdfText.drawsBackground = false |
76 |
| - sdfText.font = NSFont.systemFont(ofSize: 40) |
77 |
| - sdfText.textColor = jikeY |
78 |
| - sdfText.alignment = .center |
79 |
| - self.addSubview(sdfText) |
| 37 | + func initUI (_ rect: NSRect) { |
| 38 | + |
| 39 | + if (rect.size.width < 300 && rect.size.height < 200) { |
| 40 | + // 此时为在设置中的预览窗口 296 * 184 |
| 41 | + let width = rect.size.width |
| 42 | + let height = rect.size.height |
| 43 | + |
| 44 | + let tipTitle = NSTextField() |
| 45 | + tipTitle.frame = NSRect.init(x: width * 0.05, y: height * 0.618 + 10, width: width * 0.9, height: 30) |
| 46 | + tipTitle.isEditable = false |
| 47 | + tipTitle.isBordered = false |
| 48 | + tipTitle.drawsBackground = false |
| 49 | + tipTitle.font = NSFont.systemFont(ofSize: 20) |
| 50 | + tipTitle.textColor = jikeY |
| 51 | + tipTitle.alignment = .center |
| 52 | + tipTitle.stringValue = "即刻黄历saver版" |
| 53 | + self.addSubview(tipTitle) |
| 54 | + |
| 55 | + let tipLine = NSView.init(frame: NSRect.init(x: width * 0.05, y: height * 0.618, width: width * 0.9, height: 1)) |
| 56 | + tipLine.wantsLayer = true |
| 57 | + tipLine.layer?.setNeedsDisplay() |
| 58 | + tipLine.layer?.backgroundColor = jikeY.cgColor |
| 59 | + self.addSubview(tipLine) |
| 60 | + |
| 61 | + let tipText = NSTextField() |
| 62 | + tipText.frame = NSRect.init(x: width * 0.05, y: 10, width: width * 0.9, height: height * 0.618 - 20) |
| 63 | + tipText.isEditable = false |
| 64 | + tipText.isBordered = false |
| 65 | + tipText.drawsBackground = false |
| 66 | + tipText.font = NSFont.systemFont(ofSize: 12) |
| 67 | + tipText.textColor = jikeY |
| 68 | + tipText.alignment = .left |
| 69 | + tipText.stringValue = "1.请在一起下载到的 j2k.app(dock工具) 中登录即刻账号以获得每日运势和即友金句\n2.请勿点击下面的 '屏幕保护程序选项...' 按钮" |
| 70 | + self.addSubview(tipText) |
| 71 | + |
| 72 | + } else { |
| 73 | + // 多屏幕下通过制定到当前window去取当前的窗口的尺寸 |
| 74 | + let width: CGFloat = (self.window?.screen?.frame.size.width)! |
| 75 | + let height: CGFloat = (self.window?.screen?.frame.size.height)! |
| 76 | + |
| 77 | + let showWith = width * ratio |
| 78 | + let widthPadding = width * (1 - ratio) / 2 |
| 79 | + let lineHeight = height * (1 - ratio) |
| 80 | + canDoText.frame = NSRect.init(x: widthPadding, y: lineHeight + 280, width: showWith, height: 80) |
| 81 | + canDoText.isEditable = false |
| 82 | + canDoText.isBordered = false |
| 83 | + canDoText.drawsBackground = false |
| 84 | + canDoText.font = NSFont.systemFont(ofSize: 60) |
| 85 | + canDoText.textColor = jikeY |
| 86 | + canDoText.alignment = .center |
| 87 | + self.addSubview(canDoText) |
| 88 | + |
| 89 | + daliyText.frame = NSRect.init(x: widthPadding, y: lineHeight + 220, width: showWith, height: 50) |
| 90 | + daliyText.isEditable = false |
| 91 | + daliyText.isBordered = false |
| 92 | + daliyText.drawsBackground = false |
| 93 | + daliyText.font = NSFont.systemFont(ofSize: 30) |
| 94 | + daliyText.textColor = jikeY |
| 95 | + daliyText.alignment = .center |
| 96 | + self.addSubview(daliyText) |
| 97 | + |
| 98 | + |
| 99 | + |
| 100 | + dateNumText.frame = NSRect.init(x: widthPadding, y: lineHeight + 30, width: showWith, height: 200) |
| 101 | + |
| 102 | + let leftPadding = ( showWith - 840 ) / 2 |
| 103 | + |
| 104 | + dateNum_h.frame = NSRect.init(x: leftPadding, y: 0, width: 240, height: 200) |
| 105 | + dateNum_h.isEditable = false |
| 106 | + dateNum_h.isBordered = false |
| 107 | + dateNum_h.drawsBackground = false |
| 108 | + dateNum_h.font = NSFont.systemFont(ofSize: 180) |
| 109 | + dateNum_h.textColor = jikeY |
| 110 | + dateNum_h.alignment = .center |
| 111 | + dateNumText.addSubview(dateNum_h) |
| 112 | + |
| 113 | + let dateSignOne = NSTextField() |
| 114 | + dateSignOne.frame = NSRect.init(x: leftPadding + 240, y: 0, width: 60, height: 200) |
| 115 | + dateSignOne.isEditable = false |
| 116 | + dateSignOne.isBordered = false |
| 117 | + dateSignOne.drawsBackground = false |
| 118 | + dateSignOne.font = NSFont.systemFont(ofSize: 180) |
| 119 | + dateSignOne.textColor = jikeY |
| 120 | + dateSignOne.alignment = .center |
| 121 | + dateSignOne.stringValue = ":" |
| 122 | + dateNumText.addSubview(dateSignOne) |
| 123 | + |
| 124 | + dateNum_m.frame = NSRect.init(x: leftPadding + 300, y: 0, width: 240, height: 200) |
| 125 | + dateNum_m.isEditable = false |
| 126 | + dateNum_m.isBordered = false |
| 127 | + dateNum_m.drawsBackground = false |
| 128 | + dateNum_m.font = NSFont.systemFont(ofSize: 180) |
| 129 | + dateNum_m.textColor = jikeY |
| 130 | + dateNum_m.alignment = .center |
| 131 | + dateNumText.addSubview(dateNum_m) |
| 132 | + |
| 133 | + let dateSignTwo = NSTextField() |
| 134 | + dateSignTwo.frame = NSRect.init(x: leftPadding + 540, y: 0, width: 60, height: 200) |
| 135 | + dateSignTwo.isEditable = false |
| 136 | + dateSignTwo.isBordered = false |
| 137 | + dateSignTwo.drawsBackground = false |
| 138 | + dateSignTwo.font = NSFont.systemFont(ofSize: 180) |
| 139 | + dateSignTwo.textColor = jikeY |
| 140 | + dateSignTwo.alignment = .center |
| 141 | + dateSignTwo.stringValue = ":" |
| 142 | + dateNumText.addSubview(dateSignTwo) |
| 143 | + |
| 144 | + dateNum_s.frame = NSRect.init(x: leftPadding + 600, y: 0, width: 240, height: 200) |
| 145 | + dateNum_s.isEditable = false |
| 146 | + dateNum_s.isBordered = false |
| 147 | + dateNum_s.drawsBackground = false |
| 148 | + dateNum_s.font = NSFont.systemFont(ofSize: 180) |
| 149 | + dateNum_s.textColor = jikeY |
| 150 | + dateNum_s.alignment = .center |
| 151 | + dateNumText.addSubview(dateNum_s) |
| 152 | + |
| 153 | + self.addSubview(dateNumText) |
| 154 | + |
| 155 | + lineOne.frame = NSRect.init(x: widthPadding, y: lineHeight + 5, width: showWith, height: 4) |
| 156 | + lineOne.wantsLayer = true |
| 157 | + lineOne.layer?.setNeedsDisplay() |
| 158 | + lineOne.layer?.backgroundColor = jikeY.cgColor |
| 159 | + self.addSubview(lineOne) |
| 160 | + |
| 161 | + lineTwo.frame = NSRect.init(x: widthPadding, y: lineHeight, width: showWith, height: 1) |
| 162 | + lineTwo.wantsLayer = true |
| 163 | + lineTwo.layer?.setNeedsDisplay() |
| 164 | + lineTwo.layer?.backgroundColor = jikeY.cgColor |
| 165 | + self.addSubview(lineTwo) |
| 166 | + |
| 167 | + sdfText.frame = NSRect.init(x: widthPadding, y: lineHeight - 250, width: showWith, height: 200) |
| 168 | + sdfText.isEditable = false |
| 169 | + sdfText.isBordered = false |
| 170 | + sdfText.drawsBackground = false |
| 171 | + sdfText.font = NSFont.systemFont(ofSize: 40) |
| 172 | + sdfText.textColor = jikeY |
| 173 | + sdfText.alignment = .center |
| 174 | + self.addSubview(sdfText) |
| 175 | + } |
| 176 | + |
| 177 | + |
80 | 178 |
|
81 | 179 |
|
82 | 180 | }
|
@@ -163,7 +261,7 @@ final class SaverView: ScreenSaverView {
|
163 | 261 |
|
164 | 262 | override func draw(_ rect: NSRect) {
|
165 | 263 | super.draw(rect)
|
166 |
| - self.initUI() |
| 264 | + self.initUI(rect) |
167 | 265 | self.initData()
|
168 | 266 | }
|
169 | 267 |
|
@@ -212,7 +310,10 @@ final class SaverView: ScreenSaverView {
|
212 | 310 | let sec = theComponents.second! < 10 ? "0\(secStr)" : secStr
|
213 | 311 |
|
214 | 312 | daliyText.stringValue = "\(year) 年 \(mouth) 月 \(day) 日 \(week)"
|
215 |
| - dateNumText.stringValue = "\(hour):\(min):\(sec)" |
| 313 | + dateNum_h.stringValue = "\(hour)" |
| 314 | + dateNum_m.stringValue = "\(min)" |
| 315 | + dateNum_s.stringValue = "\(sec)" |
| 316 | + |
216 | 317 | }
|
217 | 318 |
|
218 | 319 | override var hasConfigureSheet: Bool {
|
|
0 commit comments