一種窗體標題欄的創建方法及裝置的製作方法
2023-09-18 15:28:10
專利名稱:一種窗體標題欄的創建方法及裝置的製作方法
技術領域:
本發明屬於IOS作業系統技術領域,尤其涉及一種IOS作業系統下窗體標題欄的創建方法及裝置。
背景技術:
蘋果MAC作業系統或者ios作業系統中的窗體大體分為兩類,帶標題欄窗體和不帶標題欄窗體。帶標題欄的窗體採用系統預先定義好的界面風格,界面形式很難改變。不帶標題欄的窗體雖然可以自定義,但其窗體最小化到應用程式停靠欄(Dock)時顯示的標題為應用程式的標題而不是窗體的標題;而且在蘋果作業系統的窗體顯示工具(EXpos6)中展示時,其窗體標題顯示是空的。綜上所述,現有的MAC作業系統中的兩種窗體不能滿足既能自定義窗體標題欄,又能在Dock和Expos6中展示窗體標題這個需求。
發明內容
本發明的目的在於提供一種窗體標題欄的創建方法,以解決現有MAC作業系統中的窗體不能同時滿足自定義窗體標題欄以及在Dock和Expos6中展示窗體標題的問題。本發明是這樣實現的,一種窗體標題欄的創建方法,所述方法包括:在窗體的頂層視圖中添加一個自定義視圖;將所述自定義視圖作為窗體標題欄覆蓋窗體標題區。
本發明的另一目的在於提供一種窗體標題欄的創建裝置,所述裝置包括:視圖添加單元,用於在窗體的頂層視圖中添加一個自定義視圖;視圖覆蓋單元,用於將所述自定義視圖作為窗體標題欄覆蓋窗體標題區。從上述技術方案可以看出,本發明通過在頂層視圖中添加一自定義的視圖,並將該自定義視圖作為窗體標題欄覆蓋窗體標題區,從而使得該視圖具有自定義性和普通窗體的操作特性,最小化到Dock和Expos6中時窗體標題仍能正常顯示。
圖1是本發明實施例一提供的窗體標題欄創建方法的實現流程圖;圖2是本發明實施例一提供的窗體視圖層次和布局的示例圖;圖3是本發明實施例一提供的窗體標題欄創建的示例圖;圖4是本發明實施例二提供的窗體標題欄創建方法的實現流程圖;圖5是本發明實施例三提供的窗體標題欄創建裝置的組成結構圖。
具體實施例方式為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,並不用於限定本發明。為了說明本發明所述的技術方案,下面通過具體實施例來進行說明。實施例一:圖1示出了本發明實施例一提供的窗體標題欄創建方法的實現流程,該方法過程詳述如下:在步驟SlOl中,在窗體的頂層視圖中添加一個自定義視圖;具體為,獲取用戶區視圖(contentView)的父視圖(superView)對象ViewP,構造蘋果作業系統中的一個視圖類型,比如NSView類型,並構造該NSView類型派生類對象ViewS,將所述派生類對象ViewS作為父視圖對象ViewP的子視圖,並通過調用ViewP中的添加子視圖 接口(將該子視圖接口中addSubview positioned:relativeTo:方法positioned的參數設置為NSWindowBelow)將ViewS設置為ViewP的最底層視圖。需要說明的是,所述contentView的superView為窗體的頂層視圖,所述子視圖為自定義視圖。在本實施例中,所述頂層視圖指的是superView為空的視圖,是一個NSThemeFrame類型的視圖。其中,NSThemeFrame類型是蘋果作業系統中視圖類型(NSView)的派生類型,是contentView的superView,同時也是窗體的頂層視圖。在步驟S102中,將所述自定義視圖作為窗體標題欄覆蓋窗體標題區。具體為,構造蘋果作業系統中的一個窗體類型,比如NSWindow類型,通過該NSffindow類型的通知函數(NSWindowDidResizeNotification,當窗體的大小發生改變時觸發)監測當前窗體大小變更的觸發操作,在監測到當前窗體大小發生變更時,將所述ViewS置於當前窗體的左上角,並將所述ViewS的寬度調整為當前窗體的寬度,將所述contentView的高度調整為所述ViewS的高度,實現窗體標題區的覆蓋。在本實施例中,由於contentView和系統按鈕都是頂層視圖的子視圖(如圖2所示),窗體的標題欄在NSThemeFrame視圖區域中繪製。所以只要在頂層視圖中加入一個自定義的視圖,用所述自定義的視圖覆蓋窗體標題區域使之成為窗體標題欄(如圖3所示),則該視圖就具有自定義性和普通窗體的操作特性,最小化到Dock和Expos6中時窗體標題仍能正常顯示。實施例二:圖4示出了本發明實施例二提供的窗體標題欄創建方法的實現流程,本實施例在實施例一的基礎上增加了步驟S403:在步驟S403中,根據當前窗體的狀態繪製窗體標題欄背景。具體為,構造蘋果作業系統中的一個窗體類型,比如NSWindow類型,通過該NSffindow類型的通知函數(NSWindowDidBecomeMainNotification,當窗體變成激活態時觸發)和NSWindowDidResignMainNotification,當窗體變成非激活態時觸發事件)監測當前窗體狀態變更的觸發操作,在監測到當前窗體狀態發生變更時,從預先存儲的漸變色中提取與當前窗體狀態對應的漸變色,根據提取的漸變色生成NSGradient (蘋果作業系統中的類型,用於視圖的漸變繪製)對象,並調用NSGradient對象中的drawInRect:angle:方法(NSGradient對象的方法,用於繪製指定區域和角度的漸變)繪製窗體標題欄背景(例如繪製成系統風格的標題欄)。需要說明的是,在系統庫中預先存儲有窗體不同狀態下的漸變色,其中所述漸變色可存儲成常量。
在本實施例中,所述狀態包括但不僅限於激活態或者非激活態。本實施例在窗體標題欄自定義的過程中,可以使標題欄背景重新繪製,以及時反映窗體狀態的變更。實施例三:圖5示出了本發明實施例三提供的窗體標題欄創建裝置的組成結構,為了便於說明,僅不出了與本發明實施例相關的部分。該窗體標題欄創建裝置可以是運行於各應用系統內的軟體單元、硬體單元或者軟硬體相結合的單元,也可以作為獨立的掛件集成到各應用系統中。該窗體標題欄創建裝置包括視圖添加單元51以及視圖覆蓋單元52。其中,各單元的具體功能如下:視圖添加單元51,用於在窗體的頂層視圖中添加一個自定義視圖;具體用於獲取用戶區視圖的父視圖對象,並構造一個NSView類型派生類對象,將所述派生類對象作為父視圖對象的子視圖,並通過·調用父視圖對象中的添加子視圖接口將所述派生類對象設置為父視圖對象的最底層視圖。視圖覆蓋單元52,用於將所述自定義視圖作為窗體標題欄覆蓋窗體標題區;具體用於通過NSWindow的通知函數監測當前窗體大小變更的觸發操作,在監測到當前窗體大小變更的觸發操作時,將所述子視圖置於當前窗體的左上角,並將所述子視圖的寬度調整為當前窗體的寬度,將所述用戶區視圖的高度調整為所述子視圖的高度。進一步的,所述裝置還包括背景繪製單元,用於根據當前窗體的狀態繪製窗體標題欄背景,所述狀態包括激活或者非激活態,;具體用於通過NSWindow的通知函數監測當前窗體狀態變更的觸發操作,在監測到當前窗體狀態變更的觸發操作時,從預先存儲的漸變色中提取與當前窗體狀態對應的漸變色,根據提取的漸變色生成NSGradient對象,並調用NSGradient對象中的drawInRect:angle:方法繪製窗體標題欄背景。本實施例提供的窗體標題欄創建裝置可以使用在前述對應的窗體標題欄創建方法中,詳情參見上述窗體標題欄創建方法實施例一和二的相關描述,在此不再贅述。本領域普通技術人員可以理解為實施例三所包括的各個單元只是按照功能邏輯進行劃分的,但並不局限於上述的劃分,只要能夠實現相應的功能即可;另外,各功能單元的具體名稱也只是為了便於相互區分,並不用於限制本發明的保護範圍。綜上所述,本發明實施例通過在頂層視圖中添加一自定義的視圖,並將該自定義視圖作為窗體標題欄覆蓋窗體標題區,從而使得該視圖具有自定義性和普通窗體的操作特性,最小化到Dock和EXpos6中時窗體標題仍能正常顯示。而且,在窗體標題欄自定義的過程中,可以使標題欄背景重新繪製,以及時反映窗體狀態的變更。另外,本發明實施例實現簡單,易用性好,具有較強的實用價值。本領域普通技術人員還可以理解,實現上述實施例方法中的全部或部分步驟是可以通過程序來指令相關的硬體來完成,所述的程序可以在存儲於一計算機可讀取存儲介質中,所述的存儲介質,包括R0M/RAM、磁碟、光碟等。以上所述僅為本發明的較佳實施例而已,並不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護範圍之內。
權利要求
1.一種窗體標題欄的創建方法,其特徵在於,所述方法包括: 在窗體的頂層視圖中添加一個自定義視圖; 將所述自定義視圖作為窗體標題欄覆蓋窗體標題區。
2.如權利要求1所述的方法,其特徵在於,所述在窗體的頂層視圖中添加一個自定義視圖具體包括: 獲取用戶區視圖的父視圖對象,並構造一個NSView類型派生類對象,將所述派生類對象作為父視圖對象的子視圖,並通過調用父視圖對象中的添加子視圖接口將所述派生類對象設置為父視圖對象的最底層視圖。
3.如權利要求2所述的方法,其特徵在於,所述將所述自定義視圖作為窗體標題欄覆蓋窗體標題區具體包括: 通過NSWindow的通知函數監測當前窗體大小變更的觸發操作,在監測到當前窗體大小變更的觸發操作時,將所述子視圖置於當前窗體的左上角,並將所述子視圖的寬度調整為當前窗體的寬度,將所述用戶區視圖的高度調整為所述子視圖的高度。
4.如權利要求1所述的方法,其特徵在於,所述方法還包括: 根據當前窗體的狀態繪製窗體標題欄背景,所述狀態包括激活態或者非激活態。
5.如權利要求4所述的方法,其特徵在於,所述根據當前窗體的狀態繪製窗體標題欄背景具體包括: 通過NSWindow的通知函數監測當前窗體狀態變更的觸發操作,在監測到當前窗體狀態變更的觸發操作時,從預先存儲的漸變色中提取與當前窗體狀態對應的漸變色,根據提取的漸變色生成NSGradient對象,並調用NSGradient對象中的drawInRect:angle:方法繪製窗體標題欄背景。
6.一種窗體標題欄的創建裝置,其特徵在於,所述裝置包括: 視圖添加單元,用於在窗體的頂層視圖中添加一個自定義視圖; 視圖覆蓋單元,用於將所述自定義視圖作為窗體標題欄覆蓋窗體標題區。
7.如權利要求6所述的裝置,其特徵在於,所述視圖添加單元,具體用於獲取用戶區視圖的父視圖對象,並構造一個NSView類型派生類對象,將所述派生類對象作為父視圖對象的子視圖,並通過調用父視圖對象中的添加子視圖接口將所述派生類對象設置為父視圖對象的最底層視圖。
8.如權利要求7所述的裝置,其特徵在於,所述視圖覆蓋單元,具體用於通過NSWindow的通知函數監測當前窗體大小變更的觸發操作,在監測到當前窗體大小變更的觸發操作時,將所述子視圖置於當前窗體的左上角,並將所述子視圖的寬度調整為當前窗體的寬度,將所述用戶區視圖的高度調整為所述子視圖的高度。
9.如權利要求6所述的裝置,其特徵在於,所述裝置還包括: 背景繪製單元,用於根據當前窗體的狀態繪製窗體標題欄背景,所述狀態包括激活或者非激活態。
10.如權利要求9所述的裝置,其特徵在於,所述背景繪製單元,具體用於通過NSffindow的通知函數監測當前窗體狀態變更的觸發操作,在監測到當前窗體狀態變更的觸發操作時,從預先存儲的漸變色中提取與當前窗體狀態對應的漸變色,根據提取的漸變色生成NSGradient對象,並調用NSGradient對象中的drawInRect:angle:方法繪製窗體標題欄背 景。
全文摘要
本發明適用於IOS作業系統技術領域,提供了一種窗體標題欄的創建方法及裝置,所述方法包括在窗體的頂層視圖中添加一個自定義視圖;將所述自定義視圖作為窗體標題欄覆蓋窗體標題區。本發明可以同時滿足MAC下窗體標題欄的自定義以及Dock和Exposé中窗體標題的展示。
文檔編號G06F9/44GK103246505SQ20121003158
公開日2013年8月14日 申請日期2012年2月13日 優先權日2012年2月13日
發明者嶽上, 鄭林州, 肖曉, 陳卓 申請人:騰訊科技(深圳)有限公司