看过好多帖子都是Win环境装XS,Mac只是个模拟器,讲解在Mac环境下如何配置Xamarin Studio很少,也是一点点找资料,东拼西凑才把Xamarin Studio装在Mac上跑起来,如下:

看起来和Xcode差不多是吧,相比体验性还是没Xcode好,毕竟原生苹果爸爸自己做的。。

好了 ,首先先要下载一个Xamarin Studio For Mac

最好下最新版的,反正迟早也会更新,我用的是5.2的升级到最新的

点开后发现打不开,这是因为需要一个pkg,这个pkg叫MonoFramework.macos10.xamarin.x86

这个是编译器的主体框架,还有扩展框架:

请忽略版本信息。。当时关于Mac的资源很少,就下的老版的,然后后期升级到最新版本,简直浪费时间=。=

大概说明一下这几个pkg的对于编程的意义吧:

1.Xamarin Studio 的主体框架编译文件

2.安卓的编译、框架工具包(可以这么叫吧。。)安装这个包后就可以建立安卓app项目了。

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版本:

Xcode 版本

                               支持sdk                    需要OS                               时间
xcode 8~                ios 10                       Sierra                                2016
xcode 7~                 ios 9                       El Capitan                           2015
xcode 6.0~6.3         ios 8                       OS X Yosemite                  2014.9
xcode 5.0~5.1         ios 7                       OS X Mavericks                  2013.9
xcode 4.5~4.6         ios 6                       OS X MountainLi               2012~2013
xcode 4.1~4.4         ios 5                       Snow Leopard~ Lion          2011~2012  

也就是说,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的地址, 不知道最终能不能给我漂洋过海寄过来。

Xamarin iOS 开发界面

熟悉的StroyBoard,但是用过了XCode 的界面,总觉得哪里怪怪的,当然你完全可以用XCode 画完界面然后拖回VS2015.

Xamarin For Android

个人觉得这块比较有实际意义,如果哪天Android都用C#来开发了,那Google 不是要恨死 巨软了。事实上Xamarin 开发Android 确实做的还可以。现在又有微软出品的Android模拟器,快,确实快很多,C# 语言又比Java 爽,爽太多。。。这一块,不像iOS制约条件那么多,而且破解版很容易。iOS 的Build Host 破解似乎比较慢。。因此这块就留待各位自己去体验了。

Xamarin Studio在Mac环境下的配置和Xamarin.iOS常用控件的示例的更多相关文章

  1. Mac环境下安装配置Hadoop伪分布式

    伪分布式需要修改5个配置文件(hadoop2.x的配置文件$HADOOP_HOME/etc/hadoop) 第一个:hadoop-env.sh #vim hadoop-env.sh #第25行,由于新 ...

  2. mac环境下jdk配置

    查看mac下jdk路径 当在Mac下安装完Java运行环境,而又没有添加JAVA_HOME变量的时候,我们如何得到JAVA_HOME变量的路径呢?直接在home目录下执行命令:/usr/libexec ...

  3. Mac环境下PHPstorm配置xdebug开发调试web程序

    一.安装PHP的xdebug扩展 安装xdebug(技巧,为了找到适配的版本,让xdebug网站根据phpinfo()函数输出分析找到对应的方法及安装步骤:如果安装了多个PHP版本的话,尽量用phpi ...

  4. Mac环境下 jieba 配置记录

    在终端里输入: pip3 install jieba -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

  5. 【Xamarin挖墙脚系列:时刻下载最新的Mac环境下的Xamarin安装包】

    原文:[Xamarin挖墙脚系列:时刻下载最新的Mac环境下的Xamarin安装包] 打开这两个地址,就能看到最新的安装包了.... http://www.jianshu.com/p/c67c14b3 ...

  6. Linux环境下如何配置IP地址、MAC地址

    Linux环境下如何配置IP地址.MAC地址 1.配置IP地址 进入配置IP地址路径,进行修改即可 cd /etc/network vim interface 加入以下内容: iface eth0 i ...

  7. Mac环境下SVN的配置和使用

    简单记录一下在Mac环境下,SVN的配置步骤和使用相关.(Mac自带了svn的服务器和客户端功能,简单配置一下即可使用) 一.SVN的配置方法 1. 创建一个仓库目录,比如在/Users/你的用户名 ...

  8. Mac 环境下svn服务器的配置

    Mac 环境下svn服务器的配置 本文目录 • 一.创建代码仓库,用来存储客户端所上传的代码 • 二.配置svn的用户权限 • 三.使用svn客户端功能 在Windows环境中,我们一般使用Torto ...

  9. Mac环境下 Python3安装及配置

    1.mac 环境下安装 python3 .查看 mac 自带系统版本 #查看系统自带的python open /System/Library/Frameworks/Python.framework/V ...

随机推荐

  1. 你所不知道的JavaScript数组

    相信每一个 javascript 学习者,都会去了解 JS 的各种基本数据类型,数组就是数据的组合,这是一个很基本也十分简单的概念,他的内容没多少,学好它也不是件难事情.但是本文着重要介绍的并不是我们 ...

  2. [.net 面向对象程序设计进阶] (21) 反射(Reflection)(下)设计模式中利用反射解耦

    [.net 面向对象程序设计进阶] (21) 反射(Reflection)(下)设计模式中利用反射解耦 本节导读:上篇文章简单介绍了.NET面向对象中一个重要的技术反射的基本应用,它可以让我们动态的调 ...

  3. java中文乱码解决之道(八)-----解决URL中文乱码问题

    我们主要通过两种形式提交向服务器发送请求:URL.表单.而表单形式一般都不会出现乱码问题,乱码问题主要是在URL上面.通过前面几篇博客的介绍我们知道URL向服务器发送请求编码过程实在是实在太混乱了.不 ...

  4. ASP.NET MVC 过滤器(五)

    ASP.NET MVC 过滤器(五) 前言 上篇对了行为过滤器的使用做了讲解,如果在控制器行为的执行中遇到了异常怎么办呢?没关系,还好框架给我们提供了异常过滤器,在本篇中将会对异常过滤器的使用做一个大 ...

  5. OracleConnection is obsolete

    用EF搞Oracle的 fake CodeFirst 时,一直报错以下错误: 对类型“System.Data.OracleClient.OracleConnection”的存储区提供程序实例调用“ge ...

  6. Nginx服务器之基础学习

    一.Nginx介绍 nginx:Nginx是一种软件服务器(轻量级),故它最主要的功能就是可以与服务器硬件结合,我们的应用程序可以放在nginx服务器上进行发布,已达到让网民浏览的效果.除此自外,Ng ...

  7. 在Thinkphp3.2.3框架下实现自动获取客户端IP地址的get_client_ip()函数

    在Thinkphp框架下使用get_client_ip()函数获取客户端IP地址十分方便: 一行代码便可以实现:$ip = get_client_ip(); 但当我们测试时会遇到后台获取的IP地址显示 ...

  8. Java设计模式之建造者模式(Builder)

    前言: 最近一直在学习okHttp,也对其做了一些整理,okHttp和Retrofit结合大大加速我们的开发效率,源码里面采用了很多设计模式,今天我们来学习一下其中的设计模式之一建造者模式. 建造者模 ...

  9. MySQL学习笔记九:存储过程,存储函数,触发器

    存储过程 1.存储过程由一组特定功能的SQL语句组成,对于大型应用程序优势较大,相对不使用存储过程,具有以下优点: a.性能提高,因为存储过程是预编译的,只需编译一次,以后调用就不须再编译 b.重用性 ...

  10. Hawk: 无编程抓取淘女郎的所有高清照片

    1.这是什么鬼? 哦?美女? 最近看了这一篇文章:http://cuiqingcai.com/1001.html 大概说的是用Python和Pyspider(这货好像是我的一位师兄写的,吓尿),抓取淘 ...