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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 自定義檢視指令
- Laravel 自定義檢視元件Laravel元件
- 自定義 Command 檢視 Laravel 日誌Laravel
- 自定義檢視---圓角柱狀圖(一)
- MAUI 移植 Xamarin.Forms 自定義渲染器UIORM
- 使用檢視格式化來自定義SharePoint
- Flutter - Drawer 抽屜檢視與自定義headerFlutterHeader
- SwiftUI 簡明教程之自定義 ModifierSwiftUI
- Pandas高階教程之:自定義選項
- Flutter日曆2.0,支援月檢視和周檢視,可以支援自定義風格Flutter
- iOS 自定義 UISlider 的 trackRectiOSUIIDE
- Flutter自定義實現神奇的卡片切換檢視Flutter
- Android 最簡單的自定義檢視管理之一Android
- 如何將自定義XML檢視注入SAP Fiori Elements應用XML
- thinkphp6 使用自定義命令,生成資料庫檢視PHP資料庫
- iOS自定義控制元件 SlideriOS控制元件IDE
- iOS自定義控制元件 AlertViewiOS控制元件View
- iOS自定義控制元件 SegmentiOS控制元件
- iOS探索 KVO原理及自定義iOS
- iOS探索 KVC原理及自定義iOS
- iOS OC-自定義TabBar TabBarViewControlleriOStabBarViewController
- JXPopupView:一個輕量級的自定義檢視彈出框架View框架
- HarmonyOS NEXT應用開發—自定義檢視實現Tab效果
- SpringBoot(3)-MVC自動配置及自定義檢視控制器Spring BootMVC
- iOS 自定義鍵盤字母按鈕iOS
- Cordova學習--iOS自定義外掛iOS
- ios自定義圓環進度條iOS
- iOS 自定義雙向滑塊SlideriOSIDE
- iOS自定義拍照框拍照&裁剪(一)iOS
- Dynamics CRM 向檢視列新增自定義圖示和提示資訊
- 使用程式碼給 SAP UI5 XML 檢視新增自定義 CSSUIXMLCSS
- iOS自定義log並寫入檔案iOS
- iOS 新增自定義的字型 Fonts provided by applicationiOSIDEAPP
- 【iOS】關於 UICollectionView 的自定義佈局iOSUIView
- iOS 自定義拖拽式控制元件:QiDragViewiOS控制元件View
- 【IOS初學者】UITableView與自定義UITableViewCelliOSUIView
- iOS自定義控制元件:自定義TableView、CollectionView空資料佔點陣圖iOS控制元件View
- 自定義視訊播放器播放器
- 自定義視覺化除錯工具視覺化除錯