啟動(dòng)圖第一篇教程

對(duì)于基本的工程設(shè)置我就不多說(shuō)了带族,可以參考我一鍵替換測(cè)試和正式key的專題草冈,那里有介紹棺蛛。

這是首頁(yè)的界面藏畅。

點(diǎn)擊選擇啟動(dòng)圖的按鈕:選擇我們本地啟動(dòng)圖

配置啟動(dòng)圖名稱:配置我們生成啟動(dòng)圖的名稱 因?yàn)槲覀兙蜕芍С謎os8以上的 我們就只需要五張圖片敷硅。所以不配置的話就使用默認(rèn)的五張名稱。

640x960@2x.png 640x1136@2x.png 640x960_HD@2x.png 750x1136@2x.png 1242x2208@3x.png

我們先寫一下點(diǎn)擊選擇啟動(dòng)圖的功能愉阎。

新建一個(gè)SFileManger管理我們選擇文件功能绞蹦。

class func selectedLaunchImages() throws -> [NSImage] {
    let openPannel = NSOpenPanel()
    openPannel.allowedFileTypes = ["png"];
    openPannel.allowsMultipleSelection = true;
    let index = openPannel.runModal()
    guard index == NSFileHandlingPanelOKButton else {
        throw SFileMangerError.other
    }
    var images:[NSImage] = []
    let urls = openPannel.urls
    for url in urls {
        let image = NSImage(contentsOf: url)
        guard let _ = image else {
            throw SFileMangerError.message("有一張不是圖片類型")
        }
        images.append(image!)
    }
    return images
}

ViewController新建一個(gè)變量保存我們選擇的圖片

/// 保存之前選擇的圖片
var launchImages:[NSImage]?

我們實(shí)現(xiàn)我們點(diǎn)擊選擇啟動(dòng)圖功能。

@IBAction func selectLaunchImageAction(_ sender: Any) {
    do {
        launchImages = try SFileManger.selectedLaunchImages()
    } catch SFileMangerError.message(let message) {
        alertMessage(message: message)
    } catch _ {

    }
}

我們新建一個(gè)NSViewController界面用來(lái)配置啟動(dòng)圖的名稱

我們自定義NSTableCellView類叫做LaunchNameCellView

把上面的控件進(jìn)行連線

@IBOutlet weak var promptNameLabel: NSTextField! // 提示的文字
@IBOutlet weak var launchNameTextFiled: NSTextField! // 啟動(dòng)圖的名字

新建一個(gè)類叫做LaunchNameViewController之后連線上面控件榜旦。

@IBOutlet weak var tableView: NSTableView!

@IBAction func saveAction(_ sender: Any) {
}

我們注冊(cè)一下我們的自定義Cell

@IBOutlet weak var tableView: NSTableView! {
    didSet {
        let nib = NSNib(nibNamed: "LaunchNameCellView", bundle: nil)
        tableView.register(nib, forIdentifier: "LaunchNameCellView")
    }
}

我們?cè)赬IB連線一下代理 之后實(shí)現(xiàn)方法幽七。

func settingData(name:String, promptValue:String) -> (_:String,_:String) {
    return (launchPromptName:name,promptValue:promptValue)
}


override func viewDidLoad() {
    super.viewDidLoad()
    data.append(settingData(name: "640x960高清名稱", promptValue: "640x690_HD@2x.png"));
    data.append(settingData(name: "640x960名稱", promptValue: "640x960@2x.png"));
    data.append(settingData(name: "640x1136名稱", promptValue: "640x1136@2x.png"));
    data.append(settingData(name: "750x1334名稱", promptValue: "750x1334@2x.png"));
    data.append(settingData(name: "1242x2208名稱", promptValue: "1242x2208@3x.png"));
    self.tableView.reloadData()
}

//FIXME: - NSTableViewDataSource
func numberOfRows(in tableView: NSTableView) -> Int {
    return data.count
}

func tableView(_ tableView: NSTableView,
               viewFor tableColumn: NSTableColumn?,
               row: Int) -> NSView? {
    let view = tableView.make(withIdentifier: "LaunchNameCellView", owner: self)
    let cell:LaunchNameCellView? = view as? LaunchNameCellView
    let source = data[row]
    cell?.promptNameLabel.stringValue = source.0
    cell?.launchNameTextFiled.placeholderString = source.1
    return cell
}
func tableView(_ tableView: NSTableView, heightOfRow row: Int) -> CGFloat {
        return 50
 }

我們運(yùn)行一下看一下配置界面的效果。

界面效果并不是我們想要的章办,我們?cè)俅蔚脑O(shè)置一下xib的約束锉走。

我們?cè)O(shè)置選中Cell沒(méi)有效果

tableView.selectionHighlightStyle = .none

最后我們查詢到我們?cè)O(shè)置NSTableColum的寬度太窄導(dǎo)致的滨彻,我們?nèi)烤惋@示出來(lái)了藕届。

我們?cè)讷@取圖片源的地方添加判斷 選中的里面必須包含我們需要的圖片。

var image640x960 = false
var image640x1136 = false
var image750x1334 = false
var image1242x2208 = false
if NSEqualSizes(NSSize.init(width: 640, height: 960), image!.size) {
    image640x960 = true
} else if NSEqualSizes(NSSize.init(width: 640, height: 1136), image!.size) {
    image640x1136 = true
} else if NSEqualSizes(NSSize.init(width: 750, height: 1334), image!.size) {
    image750x1334 = true
} else if NSEqualSizes(NSSize.init(width: 1242, height: 2208), image!.size) {
    image1242x2208 = true
}
guard image640x960 else {
    throw SFileMangerError.message("缺少640x960像素的圖片")
}
guard image640x1136 else {
    throw SFileMangerError.message("缺少640x1136像素的圖片")
}
guard image750x1334 else {
    throw SFileMangerError.message("缺少750x1334像素的圖片")
}
guard image1242x2208 else {
    throw SFileMangerError.message("缺少1242x2208像素的圖片")
}

代碼下載

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末亭饵,一起剝皮案震驚了整個(gè)濱河市休偶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辜羊,老刑警劉巖踏兜,帶你破解...
    沈念sama閱讀 211,423評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異八秃,居然都是意外死亡碱妆,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,147評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門昔驱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)疹尾,“玉大人,你說(shuō)我怎么就攤上這事骤肛∧杀荆” “怎么了?”我有些...
    開封第一講書人閱讀 157,019評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵腋颠,是天一觀的道長(zhǎng)繁成。 經(jīng)常有香客問(wèn)我,道長(zhǎng)淑玫,這世上最難降的妖魔是什么巾腕? 我笑而不...
    開封第一講書人閱讀 56,443評(píng)論 1 283
  • 正文 為了忘掉前任面睛,我火速辦了婚禮,結(jié)果婚禮上祠墅,老公的妹妹穿的比我還像新娘侮穿。我一直安慰自己,他們只是感情好毁嗦,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,535評(píng)論 6 385
  • 文/花漫 我一把揭開白布亲茅。 她就那樣靜靜地躺著,像睡著了一般狗准。 火紅的嫁衣襯著肌膚如雪克锣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,798評(píng)論 1 290
  • 那天腔长,我揣著相機(jī)與錄音袭祟,去河邊找鬼。 笑死捞附,一個(gè)胖子當(dāng)著我的面吹牛巾乳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鸟召,決...
    沈念sama閱讀 38,941評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼胆绊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了欧募?” 一聲冷哼從身側(cè)響起压状,我...
    開封第一講書人閱讀 37,704評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎跟继,沒(méi)想到半個(gè)月后种冬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,152評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡舔糖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,494評(píng)論 2 327
  • 正文 我和宋清朗相戀三年娱两,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片金吗。...
    茶點(diǎn)故事閱讀 38,629評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡十兢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辽聊,到底是詐尸還是另有隱情纪挎,我是刑警寧澤,帶...
    沈念sama閱讀 34,295評(píng)論 4 329
  • 正文 年R本政府宣布跟匆,位于F島的核電站异袄,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏玛臂。R本人自食惡果不足惜烤蜕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,901評(píng)論 3 313
  • 文/蒙蒙 一封孙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧讽营,春花似錦虎忌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至莉兰,卻和暖如春挑围,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背糖荒。 一陣腳步聲響...
    開封第一講書人閱讀 31,978評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工杉辙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人捶朵。 一個(gè)月前我還...
    沈念sama閱讀 46,333評(píng)論 2 360
  • 正文 我出身青樓蜘矢,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親综看。 傳聞我的和親對(duì)象是個(gè)殘疾皇子品腹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,499評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,761評(píng)論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)寓搬,斷路器珍昨,智...
    卡卡羅2017閱讀 134,629評(píng)論 18 139
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程县耽,因...
    小菜c閱讀 6,365評(píng)論 0 17
  • 來(lái)個(gè)大整容 app在橫屏狀態(tài)下是不顯示iPhone的狀態(tài)欄的(就是有個(gè)小電池的那一欄)句喷,除非你強(qiáng)制app這樣做。這...
    Billionfan閱讀 3,954評(píng)論 8 9
  • 我遠(yuǎn)遠(yuǎn)望見一個(gè)女子向我走來(lái)兔毙。 走近時(shí)一看簡(jiǎn)直讓我嘖舌唾琼。 這女子近看:膚若凝脂、唇若蔻丹澎剥、目若秋波锡溯、眉若遠(yuǎn)山;遠(yuǎn)觀:...
    驚鴻獨(dú)舞閱讀 282評(píng)論 7 7