Xamarin iOS教程之自定義檢視
Xamarin iOS教程之自定義檢視
Xamarin iOS自定義檢視
工具欄中的檢視在實際應用開發中用的很多,但是為了吸引使用者的眼球,開發者可以做出一些自定義的檢視。
【示例2-33】以下將實現一個自定義的檢視。當使用者觸控螢幕時,就會出現一個顯示手指當前位置的標籤檢視,以及改變主檢視的背景顏色。程式碼如下:
(1)建立一個Single View Application型別的工程,命名為2-13。
(2)新增一個C#的類檔案,並命名為MyView,具體步驟如下:
首先,選擇選單欄中的檔案|New|File…命令,彈出New File對話方塊,如圖2.53所示。
圖2.53 操作步驟1
然後選擇General中的空類,輸入類的名稱後,單擊“新建”按鈕,此時,一個名為MyView的類檔案就建立好了。
(3)開啟MainStoryboard.storyboard檔案,選擇主檢視後,選擇最右端的“屬性”按鈕,在屬性對話方塊中,將Class設定為建立的類檔名MyView。如圖2.54所示。
圖2.54 操作步驟2
(4)開啟MyView.cs檔案,編寫程式碼,實現一個自定義的檢視。程式碼如下:
- using System;
- using System.Drawing;
- using MonoTouch.Foundation;
- using MonoTouch.UIKit;
- using System.CodeDom.Compiler;
- namespace Application
- {
- partial class MyView : UIView
- {
- private UILabel labelStatus;
- public MyView (IntPtr handle) : base(handle)
- {
- this.Initialize();
- }
- public MyView(RectangleF frame) : base(frame)
- {
- this.Initialize();
- }
- //初始化方法
- private void Initialize()
- {
- this.BackgroundColor = UIColor.LightGray;
- //新增一個標籤物件
- labelStatus = new UILabel (new RectangleF (0f, 0f, this.Frame.Width, 60f));
- labelStatus.TextAlignment = UITextAlignment.Center;
- labelStatus.BackgroundColor = UIColor.DarkGray;
- labelStatus.TextColor = UIColor.White;
- this.AddSubview (this.labelStatus);
- }
- //實現觸控事件
- public override void TouchesMoved (NSSet touches, UIEvent evt)
- {
- base.TouchesMoved (touches, evt);
- UITouch touch = (UITouch)touches.AnyObject;
- PointF touchLocation = touch.LocationInView (this); //獲取觸控點的當前位置
- labelStatus.Text = String.Format ("X: {0} - Y: {1}", touchLocation.X, touchLocation.Y);
- }
- }
- }
執行效果如圖2.55所示。
圖2.55 執行效果
注意:以下的構造器覆蓋了基類的UIView(IntPtr)構造器,此建構函式總是被當為一個通過本地化程式碼進行初始化的檢視。
- public MyView (RectangleF frame) : base(frame) {}
TouchesMoved()方法被重寫,當使用者的手指在主檢視上進行移動時,就會執行此方法中的內容。
Xamarin iOS 一次性修改相同的檢視
在一個應用程式中,使用了很多相同的檢視。如果想要更改這些檢視的屬性,並且屬性都相同,該怎麼辦呢?可能聰明的開發者會想到,首先在一個檢視物件中編寫好更改的屬性,然後進行復制,最好改變此屬性對應的物件名就可以了。
這樣的方法確實可行,但是它只適用於個數較少的檢視物件。如果此應用程式中有成百上千的相同的檢視物件時,這種方法還是否可行?當然是不可行的了,這樣會使程式碼看起來冗餘,並且會花費開發者相當長的時間。那麼有沒有方法可以一次性的將相同檢視的相同屬性進行修改呢?答案當前是肯定的了。使用Appearance屬性就可以實現了,它是一個型別方法,其語法形式如下:
- 檢視類.Appearance.檢視的屬性=屬性設定;
【示例2-34】以下的程式碼就使用了Appearance屬性,將主檢視中的所有標籤改為青色背景,標題顏色為棕色的檢視。程式碼如下:
- using System;
- using System.Drawing;
- using MonoTouch.Foundation;
- using MonoTouch.UIKit;
- namespace Application
- {
- public partial class __14ViewController : UIViewController
- {
- …… //這裡省略了檢視控制器的構造方法和析構方法
- #region View lifecycle
- public override void ViewDidLoad ()
- {
- base.ViewDidLoad ();
- // Perform any additional setup after loading the view, typically from a nib.
- //新增標題物件label1
- UILabel label1 = new UILabel ();
- label1.Frame = new RectangleF (0, 90, 320, 50);
- label1.Text="紅色";
- this.View.AddSubview (label1);
- //新增標題物件label1
- UILabel label2 = new UILabel ();
- label2.Frame = new RectangleF (0, 200, 320, 50);
- label2.Text="黃色";
- this.View.AddSubview (label2);
- //新增標題物件label1
- UILabel label3 = new UILabel ();
- label3.Frame = new RectangleF (0, 310, 320, 50);
- label3.Text="青色";
- this.View.AddSubview (label3);
- //新增標題物件label1
- UILabel label4 = new UILabel ();
- label4.Frame = new RectangleF (0, 420, 320, 50);
- label4.Text="藍色";
- this.View.AddSubview (label4);
- }
- …… //這裡省略了檢視載入和解除安裝前後的一些方法
- #endregion
- }
- }
執行效果如圖2.56所示。
- UILabel.Appearance.BackgroundColor = UIColor.Cyan; //設定所有標籤的背景
- UILabel.Appearance.TextColor = UIColor.Brown; //設定所有標籤的文字顏色
執行效果如圖2.57所示。
圖2.56 執行效果 圖2.57 執行效果
本文選自:Xamarin iOS開發實戰大學霸內部資料,轉載請註明出處,尊重技術尊重IT人!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-1710120/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Xamarin iOS教程之警告檢視iOS
- Xamarin iOS教程之檢視顯示影像iOS
- Xamarin iOS教程之新增和定製檢視iOS
- Xamarin iOS教程之進度條和滾動檢視iOS
- Xamarin XAML語言教程ContentView檢視作為自定義檢視的父類View
- 自定義檢視指令
- iOS實現自定義的彈出檢視(popView)iOSView
- Laravel 自定義檢視元件Laravel元件
- 自定義例外 + 建立檢視
- MVC自定義檢視規則MVC
- Xamarin iOS教程之頁面控制元件iOS控制元件
- Xamarin iOS教程之顯示和編輯文字iOS
- Xamarin iOS教程之鍵盤的使用和設定iOS
- Xamarin iOS教程之編輯介面編寫程式碼iOS
- 自定義MVC檢視引擎ViewEngine 建立Model的專屬檢視MVCView
- 自定義 Command 檢視 Laravel 日誌Laravel
- 自定義檢視---圓角柱狀圖(一)
- AlertDialog 自定義對話方塊檢視
- 如何使用Android自定義複合檢視Android
- 前臺使用者自定義效能檢視
- SwiftUI 簡明教程之自定義 ModifierSwiftUI
- iOS開發 AVFoundation 自定義視訊錄製iOS
- iOS自定義tabBariOStabBar
- MAUI 移植 Xamarin.Forms 自定義渲染器UIORM
- Xamarin iOS開發實戰上冊----------2.2 新增和定製檢視iOS
- Flutter - Drawer 抽屜檢視與自定義headerFlutterHeader
- 自定義提醒檢視Alert-動態繪製
- iOS 基於AVPlayer自定義視訊播放器iOS播放器
- Pandas高階教程之:自定義選項
- Xamarin iOS教程之使用按鈕接接收使用者輸入iOS
- Flutter日曆2.0,支援月檢視和周檢視,可以支援自定義風格Flutter
- iOS自定義的PickViewiOSView
- iOS-自定義PickerViewiOSView
- Flutter自定義實現神奇的卡片切換檢視Flutter
- 使用檢視格式化來自定義SharePoint
- Oracle自定義函式檢視2個字串是否匹配Oracle函式字串
- Xamarin.Forms特殊的檢視BoxViewORMView
- Xamarin iOS教程之申請付費開發者賬號下載證書iOS