zoukankan      html  css  js  c++  java
  • xamarin.ios 实现圆形进度条

    using System;
    using UIKit;
    using System.Drawing;
    using CoreAnimation;
    
    namespace PMM
    {
        public class ProgressCircleView : UIView
        {
            protected CAShapeLayer _progressCircle;
            protected CAShapeLayer PageGrayCircle;
            public override CoreGraphics.CGRect Bounds {
                get 
                {
                    return base.Bounds;
                }
                set {
                    base.Bounds = value;
                    GrayCircle ();
                }
            }
    
            public ProgressCircleView ()
            {
                GrayCircle ();
            }
    
            /// <summary>
            /// Redraws the progress circle. If the circle is already on the screen, it removes that one and creates a new one using the 
            /// current properties of the view
            /// </summary>
            void RedrawCircle ()
            {
                
                var centerPoint = new PointF ((float)this.Bounds.Width , (float)this.Bounds.Height );
                UIBezierPath circlePath = UIBezierPath.FromArc (centerPoint, this.Bounds.Width * .5f, (float)(-.5 * Math.PI), (float)(1.5 * Math.PI), true);
    
                _progressCircle = new CAShapeLayer ();
    
                _progressCircle.Path = circlePath.CGPath;
                _progressCircle.StrokeColor = UIColor.Red.CGColor;
                _progressCircle.FillColor = UIColor.Clear.CGColor;
                _progressCircle.LineWidth = 5f;
                _progressCircle.LineCap = CAShapeLayer.CapRound;
                _progressCircle.StrokeStart = 0f;
                _progressCircle.StrokeEnd = 0f;
                this.Layer.AddSublayer (_progressCircle);
    
    
            }
            void GrayCircle()
            {
                if (_progressCircle != null && _progressCircle.SuperLayer != null) {
                    _progressCircle.RemoveFromSuperLayer ();
                }
                var centerPoint = new PointF ((float)this.Bounds.Width , (float)this.Bounds.Height );
                UIBezierPath circlePath = UIBezierPath.FromArc (centerPoint, this.Bounds.Width * .5f, (float)(1.5 * Math.PI), (float)(-.5 * Math.PI), false);
    
                PageGrayCircle = new CAShapeLayer ();
    
                PageGrayCircle.Path = circlePath.CGPath;
                PageGrayCircle.StrokeColor = UIColor.Gray.CGColor;
                PageGrayCircle.FillColor = UIColor.Clear.CGColor;
                PageGrayCircle.LineWidth = 4f;
                PageGrayCircle.LineCap = CAShapeLayer.CapRound;
                PageGrayCircle.StrokeStart = 0f;
                PageGrayCircle.StrokeEnd = 0f;
                this.Layer.AddSublayer (PageGrayCircle);
                RedrawCircle ();
            }
    
            /// <summary>
            /// Updates the progress circle.
            /// </summary>
            /// <param name="progressPercent">The percentage of the progress. Should be a value between 0.0 and 1.0</param>
            public void UpdateProgress(float progressPercent) {
                _progressCircle.StrokeEnd = progressPercent;
                PageGrayCircle.StrokeEnd = 1 - progressPercent;
            }
        }
    }
  • 相关阅读:
    二级域名怎么设置阿里云
    Datatable 转换 Dictionary
    mysql查询某一个字段是否包含中文字符
    mysql update select 从查询结果中更新数据
    sql 查找重复数据,并且重复数据有子集
    mysql中key 、primary key 、unique key 与index区别
    mysql添加删除索引,查看某个表的建表语句
    优化你的服务器Apache、MySQL、PHP
    JQUERY多选框,单选框,检查选中的值
    jquery上传插件uploadify使用详解
  • 原文地址:https://www.cnblogs.com/qinhe/p/5255829.html
Copyright © 2011-2022 走看看