xamarin.from上可以使用本身的button实现圆角带图标的按钮,但是没有半圆角的按钮实现,需要自己使用Renderer重新写过来重写一个button。

下面是一个重写的带边框的方式,代码如下:

 using UIKit;
using Xamarin.Forms.Platform.iOS;
using Xamarin.Forms;
using CoreAnimation;
using System.ComponentModel; [assembly: ExportRenderer(typeof(Test.Renderers.MyRadiusButton), typeof(Test.iOS.Renderers.MyRadiusButton))]
namespace Test.iOS.Renderers
{
public class MyRadiusButton : ButtonRenderer
{
bool btnStatus = true;
bool radiusLeft = true;
protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
{
base.OnElementChanged(e);
Test.Renderers.MyRadiusButton view = Element as Test.Renderers.MyRadiusButton;
radiusLeft = view.RadiusLeft;
if (e.OldElement == null)
{
UIBezierPath maskPath; double widthLength = / - ;
maskPath = UIBezierPath.FromRoundedRect(new CoreGraphics.CGRect(, , widthLength, ), UIRectCorner.TopLeft | UIRectCorner.BottomLeft, new CoreGraphics.CGSize(, )); CAShapeLayer maskLayer = new CAShapeLayer();
//maskLayer.Frame = new CoreGraphics.CGRect(0, 0, widthLength, 35);
maskLayer.Path = maskPath.CGPath;
maskLayer.StrokeColor = new CoreGraphics.CGColor(, , );//边框颜色 CAShapeLayer borderLayer = new CAShapeLayer();
borderLayer.Path = maskPath.CGPath;
borderLayer.Frame = new CoreGraphics.CGRect(, , widthLength, );
borderLayer.FillColor = new CoreGraphics.CGColor(, , , 0f);
borderLayer.StrokeColor = new CoreGraphics.CGColor(0.23f, 0.72f, 0.47f, 1.0f);
borderLayer.LineWidth = ; Control.Layer.Mask = maskLayer;
Control.Layer.AddSublayer(borderLayer);
Control.Layer.MasksToBounds = true;
Control.SetTitleColor(UIColor.FromRGB(, , ), UIControlState.Normal);
Control.BackgroundColor = UIColor.FromRGB(, , ); view.Clicked += (sender, even) =>
{
if (!view.BtnSelected)
{
if (btnStatus)
{
Control.SetTitleColor(UIColor.FromRGB(, , ), UIControlState.Normal);
Control.BackgroundColor = UIColor.FromRGB(, , );
btnStatus = !btnStatus;
}
else
{
Control.SetTitleColor(UIColor.FromRGB(, , ), UIControlState.Normal);
Control.BackgroundColor = UIColor.FromRGB(, , );
btnStatus = !btnStatus;
}
view.BtnClickAction?.Invoke();
}
}; }
}
}
}

xamarin.ios 半圆角按钮Readerer的更多相关文章

  1. xamarin UWP自定义圆角按钮

    uwp自带的button本身不支持圆角属性,所以要通过自定义控件实现. 通过设置Button的Background=“{x:Null}”设置为Null使背景为空,再设置Button.Content中的 ...

  2. Xamarin iOS教程之使用按钮接接收用户输入

    Xamarin iOS教程之使用按钮接接收用户输入 Xamarin iOS使用按钮接接收用户输入 按钮是用户交互的最基础控件.即使是在iPhone或者iPad中,用户使用最多操作也是通过触摸实现点击. ...

  3. iOS中创建自定义的圆角按钮

    iOS中很多时候都需要用到指定风格的圆角按钮,尽管UIButton提供了一个方式创建圆角按钮: + (id)buttonWithType:(UIButtonType)buttonType;//指定bu ...

  4. iOS控件圆角与半圆角

    开发过程中难免用到圆角以及恶心的半圆角,看代码 半圆角:这是把左边的两个角切成了圆角 UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoun ...

  5. Xamarin Studio在Mac环境下的配置和Xamarin.iOS常用控件的示例

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

  6. Xamarin.IOS之多视图

    欢迎大家加入以下开源社区 Xamarin-Cn:https://github.com/Xamarin-Cn Mvvmcross-Cn:https://github.com/Mvvmcross-Cn  ...

  7. Xamarin.IOS之快速入门

    欢迎大家加入以下开源社区 Xamarin-Cn:https://github.com/Xamarin-Cn Mvvmcross-Cn:https://github.com/Mvvmcross-Cn  ...

  8. Xamarin iOS编写第一个应用程序创建工程

    Xamarin iOS编写第一个应用程序创建工程 在Xcode以及Xamarin安装好后,就可以在Xamarin Studio中编写程序了.本节将主要讲解在Xamarin Studio中如何进行工程的 ...

  9. iOS Simulator功能介绍关于Xamarin IOS开发

    iOS Simulator功能介绍关于Xamarin IOS开发 iOS Simulator功能介绍 在图1.38所示的运行效果中,所见到的类似于手机的模型就是iOS Simulator.在没有iPh ...

随机推荐

  1. 69、Android 布局中轻松实现图片的全屏、居中、平铺

    public void paint() { if (item.laying_mode != 1)//平铺或者充满 { new AsyncTask<Void, Void, Void>() { ...

  2. 【POI 2010】反对称 Antisymmetry

    题目: 对于一个 $0/1$ 字符串,如果将这个字符串 $0$ 和 $1$ 取反后,再将整个串反过来和原串一样,就称作「反对称」字符串.比如 $00001111$ 和 $010101$ 就是反对称的, ...

  3. python - 接口自动化测试 - basic_data - 基础数据参数化方法封装

    # -*- coding:utf-8 -*- ''' @project: ApiAutoTest @author: Jimmy @file: basic_data.py @ide: PyCharm C ...

  4. day02_01.能被3整除的数

    第1题 能被3整除的数 编程思想的初步形成 把人的正常思维放大化,用放大镜去放大你的每个思考过程 你会发现,原来编程没有你想象的那么难 题目:输出100以内(不含100)能被3整除的所有整数 < ...

  5. selenium webdriver——鼠标事件

    Web产品中提供了丰富的鼠标交互方式,例如鼠标右击.双击.悬停.甚至是鼠标拖动等功能,在WebDriver中,将这些关于鼠标操作的方法 封装在ActionChains类中: ActionChains类 ...

  6. Unity3D - 设计模式 - 工厂模式

    工厂模式:以食物生产为例 1. 一个生产食物的工厂(此项 需要建立两个类:食物基类<Food>,工厂类<Factory>) 2. 可以生产不同的食物(此项 建立食物的具体子类, ...

  7. JSP与JavaBeans

    JavaBeans简介 JavaBeans是一种符合一定标准的普通java类,需要满足下面几点: 1 类是public 2 属性私有 3 空的public构造方法 4 通过getter setter操 ...

  8. OtherStream

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.DataInputStream; import ...

  9. [CQOI2015][bzoj3930] 选数 [杜教筛+莫比乌斯反演]

    题面: 传送门 思路: 首先我们把区间缩小到$\left[\lfloor\frac{L-1}{K}\rfloor,\lfloor\frac{R}{K}\rfloor\right]$ 这道题的最特殊的点 ...

  10. 0-Broadcast机制原理简要介绍

    Broadcast机制简要介绍 来源: http://blog.csdn.net/luoshengyang/article/details/6730748 导语 广播机制在Android系统中,也不算 ...