看過好多帖子都是Win環境裝XS,Mac只是個模擬器,講解在Mac環境下如何配置Xamarin Studio不多,也是一點點找資料,東拼西湊才把Xamarin Studio裝在Mac上跑起來,以下:android
看起來和Xcode差很少是吧,相比體驗性仍是沒Xcode好,畢竟原生蘋果爸爸本身作的。。ios
好了 ,首先先要下載一個Xamarin Studio For Mac
程序員
最好下最新版的,反正早晚也會更新,我用的是5.2的升級到最新的macos
點開後發現打不開,這是由於須要一個pkg,這個pkg叫MonoFramework.macos10.xamarin.x86編程
這個是編譯器的主體框架,還有擴展框架:api
請忽略版本信息。。當時關於Mac的資源不多,就下的老版的,而後後期升級到最新版本,簡直浪費時間=。=xcode
大概說明一下這幾個pkg的對於編程的意義吧:app
1.Xamarin Studio 的主體框架編譯文件框架
2.安卓的編譯、框架工具包(能夠這麼叫吧。。)安裝這個包後就能夠創建安卓app項目了。ide
3.iOS的編譯、框架工具包。。功能同上,能編譯iOS的app項目,UIKit什麼的都有,只是格式變成C#語言了。
4.OSX的編譯框架工具包。。能編寫Mac的項目。
5.同上,只是版本不一樣,功能暫時沒發現區別。。
6.Xamarin 編譯器
不須要所有安裝,能夠選擇部分安裝,不過第一個確定要安裝的。
我是所有雙擊安裝上,而後打開編譯器
建立新項目:
建立iOS的項目(安卓同理)
和Xcode差很少的一些項目配置
而後會發現。。瑪德和OC方法名差很少嘛hhhh
Xamarin Studio C#語言下的格式:
Xcode下OC的:
先開一個空項目,讓模擬器跑起來試試
若是出現:
錯誤信息:The version of Xamarin.iOS requires th iOS 10.1 SDK (shipped with Xcode 8.1) when the manged linker i s disabled. Either upgrade Xcode, or enable the managed linker.
這是因爲Xamarin.iOS項目都是經過蘋果系統的Xcode工具進行編譯。而每一個版本的Xcode所自帶的SDK版本不一樣。例如,只有Xcode 7.3及其以上版本才包含 iOS 9.3 SDK。因此,用戶必須將Xcode升級到最新版本,才能解決該問題。
在此給出Xcode各個版本下的iOS SDK版本:
也就是說,Xamarin.iOS.pkg的版本要對應上Xcode的iOS SDK版本纔可以啓動模擬器
我Xamarin.iOS.pkg版本自動升級成最新的了,因此須要Xcode 8.1才能支持啓動模擬器
推薦升級,編程界用舊版本會出現多少坑我相信程序員都知道,特例除外=。=
升級後就沒事咯,吧Xcode關掉後用Xamarin Studio跑一下試試 裏頭SB、Plist什麼的都同樣,iOS程序員上手會很快的
在下就簡單的寫幾個經常使用控件的示例
// UILabel的使用
UILabel myLabel = new UILabel()
{
Frame = new CoreGraphics.CGRect(100, 100, 100, 100),
Text = "Hello, Axc!",
TextAlignment = UITextAlignment.Center,
BackgroundColor = UIColor.Green,
TextColor = UIColor.White,
Lines = 0,
//Alpha = 0,
};
myLabel.Layer.MasksToBounds = true;
myLabel.Layer.CornerRadius = 10;
View.Add(myLabel);
// UI滑桿的使用
UISlider slider = new UISlider(new CoreGraphics.CGRect(10, 350, View.Frame.Width - 20, 50));
slider.MinValue = 0.0f;
slider.MaxValue = 100.0f;
slider.SetValue(20.0f, false);
slider.ValueChanged += (sender, e) =>
{
Console.WriteLine("滑桿目前的值爲 {0}", ((int)slider.Value).ToString());
};
View.Add(slider);
//UIMySwitch的使用
UISwitch MySwitch = new UISwitch(new CoreGraphics.CGRect(10, 110, 100, 30));
MySwitch.SetState(true, false);
//MySwitch.Hidden = true;
MySwitch.ValueChanged += (sender, e) =>
{
Console.WriteLine("目前MySwitch的值爲 {0}", MySwitch.On ? "ON" : "OFF");
};
View.AddSubview(MySwitch);
//UIImageView的使用
UIImageView imageView = new UIImageView()
{
Frame = new CoreGraphics.CGRect(0, 0, 100, 100),
ContentMode = UIViewContentMode.ScaleAspectFill,
BackgroundColor = UIColor.Red,
};
imageView.Image = UIImage.FromFile("1479265037.png");
View.Add(imageView);
UIButton MyButton = new UIButton(new CoreGraphics.CGRect(10, 150, 80, 50));
{
Title = "我是一個按鈕";
}
MyButton.BackgroundColor = UIColor.LightGray;
//MyButton.TitleColor = UIColor.Black;
//MyButton.SetTitleColor();
MyButton.TouchUpInside += (sender, e) =>
{
Console.WriteLine("我點擊了按鈕");
};
View.AddSubview(MyButton);
}
跑一下,和原生的差很少麼,可是畢竟跨平臺,能作到這點已經很強了
但願Xamarin Studio能發展的更出色,畢竟還有很大一個短板,就是第三方庫很是少。
這個是Xamarin 官方的例子,Xamarin Shop.該項目包含iOS, Android, WP 以及一個公共的代碼業務邏輯部分實現。好處在於能夠將複雜的邏輯抽離出來,只寫一份。3個界面仍是採用3種原生的模式開發,以達到節省工做量的目標。
只要運行這個示例,就能夠免費獲得一件C# T shirt 哦,無論信不信,反正我是填寫了便當China的地址, 不知道最終能不能給我漂洋過海寄過來。
熟悉的StroyBoard,可是用過了XCode 的界面,總以爲哪裏怪怪的,固然你徹底能夠用XCode 畫完界面而後拖回VS2015.
我的以爲這塊比較有實際意義,若是哪天Android都用C#來開發了,那Google 不是要恨死 巨軟了。事實上Xamarin 開發Android 確實作的還能夠。如今又有微軟出品的Android模擬器,快,確實快不少,C# 語言又比Java 爽,爽太多。。。這一塊,不像iOS制約條件那麼多,並且破解版很容易。iOS 的Build Host 破解彷佛比較慢。。所以這塊就留待各位本身去體驗了。