//
        // Helper function to generate shadow
        //
        private void GenerateShapeShadow(CGContext context, UIBezierPath shapeObject, nfloat xOffset, nfloat yOffset, nfloat blurValue, CGBlendMode blendingMode, UIColor shadowColor, nfloat borderWidth, int borderPosition, nfloat iWidth, nfloat iHeight)
        {
            CGPoint basePoint;
            CGPoint offsetPoint;
            CGSize  calculatedShadowOffset;
            nfloat  calculatedShadowBlur;
            CGPoint constPointZero;

            constPointZero = new CGPoint(0, 0);

            basePoint              = baseTransform.TransformPoint(context.PointToDeviceSpace(constPointZero));
            offsetPoint            = baseTransform.TransformPoint(context.PointToDeviceSpace(new CGPoint(xOffset, yOffset)));
            calculatedShadowOffset = new CGSize(offsetPoint.X - basePoint.X, offsetPoint.Y - basePoint.Y);
            if (blurValue == 0)
            {
                calculatedShadowBlur = 0;
            }
            else
            {
                calculatedShadowBlur = Hypot(calculatedShadowOffset.Width, calculatedShadowOffset.Height) / blurValue;
            }
            context.SetShadow(calculatedShadowOffset, calculatedShadowBlur, shadowColor.CGColor);
            context.SetBlendMode(blendingMode);

            context.BeginTransparencyLayer(null);

            UIColor.Black.SetFill();
            shapeObject.Fill();

            if (borderWidth > 0)
            {
                if (borderPosition == 0)
                {
                    context.SaveState();
                    shapeObject.LineWidth = borderWidth;
                    UIColor.Black.SetStroke();
                    shapeObject.Stroke();
                    context.RestoreState();
                }

                if (borderPosition == 1)
                {
                    context.BeginPath();
                    context.AddPath(shapeObject.CGPath);
                    context.EOClip();
                }

                if (borderPosition == 2)
                {
                    context.BeginPath();
                    context.AddPath(shapeObject.CGPath);
                    context.AddRect(RectangleFExtensions.Inset(shapeObject.Bounds, iWidth, iHeight));
                    context.EOClip();
                }
            }

            context.EndTransparencyLayer();
        }
Beispiel #2
0
        private void updateMinimumMaximumZoom()
        {
            RectangleF targetRect = RectangleFExtensions.Inset(Bounds, ContentViewPadding, ContentViewPadding);
            float      zoomScale  = getZoomScaleThatFits(targetRect.Size, _pageContentView.Bounds.Size);

            MinimumZoomScale = zoomScale;
            MaximumZoomScale = zoomScale * MgrAccessor.SettingsMgr.Settings.ZoomScaleLevels;
            _zoomScaleStep   = (MaximumZoomScale - MinimumZoomScale) / MgrAccessor.SettingsMgr.Settings.ZoomScaleLevels;
        }
            private UIImage GetIconForText(string text, nuint bucketIndex)
            {
                var nsText = new NSString(text);
                var icon   = _iconCache.ObjectForKey(nsText);

                if (icon != null)
                {
                    return((UIImage)icon);
                }

                var font           = UIFont.BoldSystemFontOfSize(14);
                var paragraphStyle = NSParagraphStyle.Default;
                var dict           = NSDictionary.FromObjectsAndKeys(
                    objects: new NSObject[] { font, paragraphStyle, this._options.RendererTextColor.ToUIColor() },
                    keys: new NSObject[] { UIStringAttributeKey.Font, UIStringAttributeKey.ParagraphStyle, UIStringAttributeKey.ForegroundColor }
                    );
                var attributes = new UIStringAttributes(dict);


                var textSize      = nsText.GetSizeUsingAttributes(attributes);
                var rectDimension = Math.Max(20, Math.Max(textSize.Width, textSize.Height)) + 3 * bucketIndex + 6;
                var rect          = new CGRect(0.0f, 0.0f, rectDimension, rectDimension);

                UIGraphics.BeginImageContext(rect.Size);
                UIGraphics.BeginImageContextWithOptions(rect.Size, false, 0);

                // Background circle
                var ctx = UIGraphics.GetCurrentContext();

                ctx.SaveState();

                bucketIndex = (nuint)Math.Min((int)bucketIndex, this._options.BucketColors.Length - 1);
                var backColor = this._options.BucketColors[bucketIndex];

                ctx.SetFillColor(backColor.ToCGColor());
                ctx.FillEllipseInRect(rect);
                ctx.RestoreState();

                // Draw the text
                UIColor.White.SetColor();
                var textRect = RectangleFExtensions.Inset(rect, (rect.Size.Width - textSize.Width) / 2,
                                                          (rect.Size.Height - textSize.Height) / 2);

                nsText.DrawString(RectangleFExtensions.Integral(textRect), attributes);

                var newImage = UIGraphics.GetImageFromCurrentImageContext();

                UIGraphics.EndImageContext();

                this._iconCache.SetObjectforKey(newImage, nsText);

                return(newImage);
            }
Beispiel #4
0
        /// Create a copy view of target view
        /// It helps us not to affect the original target view
        public static void AddTarget(this ShowCase materialShowcase, CGPoint atCenter)
        {
            materialShowcase.targetCopyView = materialShowcase.targetView.SnapshotView(true);
            var width  = materialShowcase.targetCopyView.Frame.Width;
            var height = materialShowcase.targetCopyView.Frame.Height;

            materialShowcase.targetCopyView.Frame  = new CGRect(0, 0, width, height);
            materialShowcase.targetCopyView.Center = atCenter;
            materialShowcase.targetCopyView.TranslatesAutoresizingMaskIntoConstraints = true;
            materialShowcase.targetCopyView.Frame             = RectangleFExtensions.Inset(materialShowcase.targetCopyView.Frame, -5f, -5f);
            materialShowcase.targetCopyView.Layer.BorderColor = UIColor.White.CGColor;
            materialShowcase.targetCopyView.Layer.BorderWidth = 5f;
            materialShowcase.AddSubview(materialShowcase.targetCopyView);
        }
Beispiel #5
0
        public void DrawArc(Pen pen, float x, float y, float width, float height, float startAngle, float sweepAngle)
        {
            StartDrawing();

            var rect = TranslateView(new System.Drawing.RectangleF(x, y, width, height), true);

            pen.Apply(this);
            var yscale  = rect.Height / rect.Width;
            var centerY = RectangleFExtensions.GetMidY(rect);
            var centerX = RectangleFExtensions.GetMidX(rect);

            Control.ConcatCTM(new CGAffineTransform(1.0f, 0, 0, yscale, 0, centerY - centerY * yscale));
            Control.AddArc(centerX, centerY, rect.Width / 2, Conversions.DegreesToRadians(startAngle), Conversions.DegreesToRadians(startAngle + sweepAngle), sweepAngle < 0);
            Control.StrokePath();
            EndDrawing();
        }
Beispiel #6
0
        public override void PrepareLayout()
        {
            base.PrepareLayout();
            calculatedAttributes.Clear();

            contentWidth = CollectionView.Frame.Width;
            nfloat columnWidth = contentWidth / NumberOfColumns;
            nfloat height      = columnWidth * 1.25f; // Our cells height is a 25% greater than their width

            for (int i = 0; i < columnsXOffset.Length; i++)
            {
                columnsXOffset[i] = i * columnWidth;
            }

            for (int i = 0; i < columnsYOffset.Length; i++)
            {
                columnsYOffset[i] = 0;
            }

            UICollectionViewLayoutAttributes attribute1 = UICollectionViewLayoutAttributes.CreateForCell(NSIndexPath.FromItemSection(0, 0));

            attribute1.Frame = new CGRect(columnsXOffset[1], 0, columnWidth, buttonHeight);
            calculatedAttributes.Add(attribute1);

            columnsYOffset[1] = buttonHeight; // Second column has a vertical offset (due to sell button height)

            int column = 0;

            for (int i = 0; i < CollectionView.NumberOfItemsInSection(1); i++)
            {
                var indexPath  = NSIndexPath.FromItemSection(i, 1);
                var frame      = new CGRect(columnsXOffset[column], columnsYOffset[column], columnWidth, height);
                var insetFrame = RectangleFExtensions.Inset(frame, 0f, 0f);

                UICollectionViewLayoutAttributes attribute = UICollectionViewLayoutAttributes.CreateForCell(indexPath);
                attribute.Frame = insetFrame;

                calculatedAttributes.Add(attribute);

                contentHeight          = System.NMath.Max(contentHeight, RectangleFExtensions.GetMaxY(frame));
                columnsYOffset[column] = columnsYOffset[column] + height;

                column = column >= (NumberOfColumns - 1) ? 0 : ++column;
            }
        }
Beispiel #7
0
        CGRect autoCompleteTableViewFrameForTextField(MLPAutoCompleteTextField textField)
        {
            CGRect frame = CGRect.Empty;

            if ((this.AutoCompleteTableFrame).Width > 0)
            {
                frame = this.AutoCompleteTableFrame;
            }
            else
            {
                frame    = textField.Frame;
                frame.Y += textField.Frame.Size.Height;
            }

            frame.X      += textField.AutoCompleteTableOriginOffset.Width;
            frame.Y      += textField.AutoCompleteTableOriginOffset.Height;
            frame.Height += textField.AutoCompleteTableSizeOffset.Height;
            frame.Width  += textField.AutoCompleteTableSizeOffset.Width;
            frame         = RectangleFExtensions.Inset(frame, 1, 0);

            return(frame);
        }
        private UIImage GetIconForText(string text, UIImage baseImage)
        {
            var nsText = new NSString(text);
            var icon   = iconCache.ObjectForKey(nsText);

            if (icon != null)
            {
                return((UIImage)icon);
            }

            var font = UIFont.BoldSystemFontOfSize(12);
            var size = baseImage.Size;

            UIGraphics.BeginImageContextWithOptions(size, false, 0.0f);
            baseImage.Draw(new CGRect(0, 0, size.Width, size.Height));
            var rect = new CGRect(0, 0, baseImage.Size.Width, baseImage.Size.Height);

            var paragraphStyle = NSParagraphStyle.Default;
            var attributes     = new UIStringAttributes(NSDictionary.FromObjectsAndKeys(
                                                            objects: new NSObject[] { font, paragraphStyle, options.RendererTextColor.ToUIColor() },
                                                            keys: new NSObject[] { UIStringAttributeKey.Font, UIStringAttributeKey.ParagraphStyle, UIStringAttributeKey.ForegroundColor }
                                                            ));

            var textSize = nsText.GetSizeUsingAttributes(attributes);
            var textRect = RectangleFExtensions.Inset(rect, (rect.Size.Width - textSize.Width) / 3,
                                                      (rect.Size.Height - textSize.Height) / 1);

            nsText.DrawString(RectangleFExtensions.Integral(textRect), attributes);

            var newImage = UIGraphics.GetImageFromCurrentImageContext();

            UIGraphics.EndImageContext();

            iconCache.SetObjectforKey(newImage, nsText);
            return(newImage);
        }
        //
        // ShapeObjectLogo
        //
        private void DrawShapeObjectLogo(CGContext context)
        {
            UIBezierPath ShapeObjectLogo;

            // Shape Path
            ShapeObjectLogo = new UIBezierPath();
            ShapeObjectLogo.MoveTo(new CGPoint(21.640106, 0.000000));
            ShapeObjectLogo.AddCurveToPoint(new CGPoint(16.612139, 2.920175), new CGPoint(19.615119, 0.005031), new CGPoint(17.632132, 1.159215));
            ShapeObjectLogo.AddLineTo(new CGPoint(0.752245, 30.580328));
            ShapeObjectLogo.AddCurveToPoint(new CGPoint(0.752245, 36.419672), new CGPoint(-0.250748, 32.346320), new CGPoint(-0.250748, 34.654687));
            ShapeObjectLogo.AddLineTo(new CGPoint(16.612139, 64.080831));
            ShapeObjectLogo.AddCurveToPoint(new CGPoint(21.641106, 67.000000), new CGPoint(17.632132, 65.841791), new CGPoint(19.615119, 66.995975));
            ShapeObjectLogo.AddLineTo(new CGPoint(53.359894, 67.000000));
            ShapeObjectLogo.AddCurveToPoint(new CGPoint(58.387861, 64.080831), new CGPoint(55.384881, 66.995975), new CGPoint(57.367868, 65.841791));
            ShapeObjectLogo.AddLineTo(new CGPoint(74.247755, 36.419672));
            ShapeObjectLogo.AddCurveToPoint(new CGPoint(74.247755, 30.580328), new CGPoint(75.250748, 34.654687), new CGPoint(75.250748, 32.346320));
            ShapeObjectLogo.AddLineTo(new CGPoint(58.386861, 2.920175));
            ShapeObjectLogo.AddCurveToPoint(new CGPoint(53.359894, 0.000000), new CGPoint(57.367868, 1.159215), new CGPoint(55.384881, 0.004025));
            ShapeObjectLogo.AddLineTo(new CGPoint(21.640106, 0.000000));
            ShapeObjectLogo.ClosePath();
            ShapeObjectLogo.MoveTo(new CGPoint(21.640106, 0.000000));
            ShapeObjectLogo.MoveTo(new CGPoint(21.928104, 16.181713));
            ShapeObjectLogo.AddCurveToPoint(new CGPoint(22.061103, 16.181713), new CGPoint(21.972313, 16.176991), new CGPoint(22.016894, 16.176991));
            ShapeObjectLogo.AddLineTo(new CGPoint(27.532066, 16.181713));
            ShapeObjectLogo.AddCurveToPoint(new CGPoint(28.130062, 16.537930), new CGPoint(27.778919, 16.189389), new CGPoint(28.004637, 16.323845));
            ShapeObjectLogo.AddLineTo(new CGPoint(37.411001, 33.143280));
            ShapeObjectLogo.AddCurveToPoint(new CGPoint(37.500000, 33.410946), new CGPoint(37.458060, 33.225659), new CGPoint(37.488317, 33.316656));
            ShapeObjectLogo.AddCurveToPoint(new CGPoint(37.587999, 33.143280), new CGPoint(37.511374, 33.316728), new CGPoint(37.541289, 33.225734));
            ShapeObjectLogo.AddLineTo(new CGPoint(46.846938, 16.537930));
            ShapeObjectLogo.AddCurveToPoint(new CGPoint(47.466934, 16.181713), new CGPoint(46.977011, 16.317781), new CGPoint(47.212411, 16.182533));
            ShapeObjectLogo.AddLineTo(new CGPoint(52.936897, 16.181713));
            ShapeObjectLogo.AddCurveToPoint(new CGPoint(53.557893, 17.229233), new CGPoint(53.421894, 16.186744), new CGPoint(53.784891, 16.798552));
            ShapeObjectLogo.AddLineTo(new CGPoint(44.497953, 33.500503));
            ShapeObjectLogo.AddLineTo(new CGPoint(53.557893, 49.748630));
            ShapeObjectLogo.AddCurveToPoint(new CGPoint(52.937897, 50.818287), new CGPoint(53.806891, 50.181323), new CGPoint(53.434894, 50.823318));
            ShapeObjectLogo.AddLineTo(new CGPoint(47.466934, 50.818287));
            ShapeObjectLogo.AddCurveToPoint(new CGPoint(46.846938, 50.439932), new CGPoint(47.207875, 50.812898), new CGPoint(46.971429, 50.668606));
            ShapeObjectLogo.AddLineTo(new CGPoint(37.586999, 33.834582));
            ShapeObjectLogo.AddCurveToPoint(new CGPoint(37.500000, 33.566916), new CGPoint(37.540639, 33.752052), new CGPoint(37.511064, 33.661063));
            ShapeObjectLogo.AddCurveToPoint(new CGPoint(37.411001, 33.834582), new CGPoint(37.488317, 33.661206), new CGPoint(37.458060, 33.752204));
            ShapeObjectLogo.AddLineTo(new CGPoint(28.131062, 50.439932));
            ShapeObjectLogo.AddCurveToPoint(new CGPoint(27.532066, 50.818287), new CGPoint(28.010506, 50.662417), new CGPoint(27.783589, 50.805749));
            ShapeObjectLogo.AddLineTo(new CGPoint(22.062103, 50.818287));
            ShapeObjectLogo.AddCurveToPoint(new CGPoint(21.442107, 49.748630), new CGPoint(21.564106, 50.823318), new CGPoint(21.192109, 50.182329));
            ShapeObjectLogo.AddLineTo(new CGPoint(30.500047, 33.500503));
            ShapeObjectLogo.AddLineTo(new CGPoint(21.440107, 17.229233));
            ShapeObjectLogo.AddCurveToPoint(new CGPoint(21.927104, 16.181713), new CGPoint(21.223109, 16.836790), new CGPoint(21.488107, 16.265233));
            ShapeObjectLogo.AddLineTo(new CGPoint(21.928104, 16.181713));
            ShapeObjectLogo.ClosePath();
            ShapeObjectLogo.MoveTo(new CGPoint(21.928104, 16.181713));

            context.SaveState();
            context.TranslateCTM(3.000000f, 7.000000f);

            // Shape Outer Shadow
            context.SaveState();
            context.BeginPath();
            context.AddPath(ShapeObjectLogo.CGPath);
            context.AddRect(RectangleFExtensions.Inset(ShapeObjectLogo.Bounds, -1f, -2f));
            context.EOClip();
            context.TranslateCTM(-77f, 0f);
            GenerateShapeShadow(context, ShapeObjectLogo, 77f, 1f, 77f, 0, UIColor.FromHSBA(0.000000f, 0.000000f, 0.000000f, 0.500000f), 0f, 0, 0f, 0f);
            context.RestoreState();

            // Shape Fill
            context.SaveState();
            if (Active)
            {
                UIColor.FromHSBA(0.530476f, 0.849515f, 0.807843f, 1.000000f).SetFill();
            }
            else
            {
                UIColor.FromRGB(137, 137, 137).SetFill();
            }

            ShapeObjectLogo.Fill();
            context.RestoreState();

            context.RestoreState();
        }
Beispiel #10
0
                public override void Layout()
                {
                    base.Layout();

                    CGSize size    = this.imageView.SizeThatFits(this.Bounds.Size);
                    CGSize cgSize1 = this.label.SizeThatFits(this.Bounds.Size);

                    if (size.Width > (nfloat)0 && (string.IsNullOrEmpty(this.Text) || cgSize1.Width > this.Bounds.Width / (nfloat)3))
                    {
                        this.imageView.Frame = new CGRect(CGPoint.Empty, size);
                        // TODO: I dunno.  Center image or something
                        //this.imageView.CenterXAnchor = RectangleFExtensions.GetMidX (this.Bounds);
                        //this.imageView.CenterYAnchor = RectangleFExtensions.GetMidY (this.Bounds);
                        this.label.Hidden = true;
                    }
                    else
                    {
                        this.label.Hidden = false;
                        CGSize cgSize2 = this.label.SizeThatFits(new CGSize(this.Bounds.Width - (nfloat)15f - size.Width, this.Bounds.Height - (nfloat)10f));
                        CGRect cgRect  = new CGRect(new CGPoint((this.Bounds.Width - cgSize2.Width - size.Width) / (nfloat)2, RectangleFExtensions.GetMidY(this.Bounds) - size.Height / (nfloat)2), size);
                        this.imageView.Frame = cgRect;
                        cgRect.X             = cgRect.Right + (nfloat)(size.Width > (nfloat)0 ? 5f : 0.0f);
                        cgRect.Size          = cgSize2;
                        cgRect.Height        = this.Bounds.Height;
                        cgRect.Y             = (nfloat)0;
                        this.label.Frame     = cgRect;
                    }
                }
Beispiel #11
0
        /// <summary>
        /// Creates the bottom bar.
        /// </summary>
        /// <returns>The bottom bar view.</returns>
        protected virtual UIView _CreateBottomBar()
        {
            // Create bottom bar
            var bottomBarFrame = View.Bounds;

            bottomBarFrame.X     += BarPaddingH;
            bottomBarFrame.Y      = bottomBarFrame.Size.Height - BarPaddingV - BottombarHeight;
            bottomBarFrame.Width -= BarPaddingH * 2;
            bottomBarFrame.Height = BottombarHeight;
            var bottomBar = new UIXToolbarView(bottomBarFrame, 0.92f, 0.32f, 0.8f);

            bottomBar.AutoresizingMask = UIViewAutoresizing.FlexibleTopMargin | UIViewAutoresizing.FlexibleWidth;

            // Create slider
            float sliderWidth = bottomBarFrame.Width - 15;

            if (MgrAccessor.OptionsMgr.Options.PageNumberVisible)
            {
                sliderWidth -= PageNumberLabelSize.Width;
            }
            var pageSliderFrame = new RectangleF(5, 10, sliderWidth, 20);

            _Slider                  = new UISlider(pageSliderFrame);
            _Slider.MinValue         = 1;
            _Slider.AutoresizingMask = UIViewAutoresizing.FlexibleWidth;
            _Slider.ValueChanged    += delegate {
                if (_PageNumberLabel != null)
                {
                    _PageNumberLabel.Text = string.Format(@"{0}/{1}", (int)_Slider.Value, PDFDocument.PageCount);
                }
            };
            _Slider.TouchUpInside += delegate(object sender, EventArgs e) {
                OpenDocumentPage((int)_Slider.Value);
            };
            bottomBar.AddSubview(_Slider);

            // Create page number view
            if (MgrAccessor.OptionsMgr.Options.PageNumberVisible)
            {
                var pageNumberViewFrame = new RectangleF(pageSliderFrame.Width + 10, 5, PageNumberLabelSize.Width, PageNumberLabelSize.Height);
                var pageNumberView      = new UIView(pageNumberViewFrame);
                pageNumberView.AutosizesSubviews      = false;
                pageNumberView.UserInteractionEnabled = false;
                pageNumberView.AutoresizingMask       = UIViewAutoresizing.FlexibleLeftMargin;
                pageNumberView.BackgroundColor        = UIColor.FromWhiteAlpha(0.4f, 0.5f);
                pageNumberView.Layer.CornerRadius     = 5.0f;
                pageNumberView.Layer.ShadowOffset     = new SizeF(0.0f, 0.0f);
                pageNumberView.Layer.ShadowPath       = UIBezierPath.FromRect(pageNumberView.Bounds).CGPath;
                pageNumberView.Layer.ShadowRadius     = 2.0f;
                pageNumberView.Layer.ShadowOpacity    = 1.0f;
                // Create page number label
                var pageNumberLabelFrame = RectangleFExtensions.Inset(pageNumberView.Bounds, 4.0f, 2.0f);
                _PageNumberLabel = new UILabel(pageNumberLabelFrame);
                _PageNumberLabel.AutosizesSubviews = false;
                _PageNumberLabel.AutoresizingMask  = UIViewAutoresizing.None;
                _PageNumberLabel.TextAlignment     = UITextAlignment.Center;
                _PageNumberLabel.BackgroundColor   = UIColor.Clear;
                _PageNumberLabel.TextColor         = UIColor.White;
                _PageNumberLabel.Font         = UIFont.SystemFontOfSize(16.0f);
                _PageNumberLabel.ShadowOffset = new SizeF(0.0f, 1.0f);
                _PageNumberLabel.ShadowColor  = UIColor.Black;
                _PageNumberLabel.AdjustsFontSizeToFitWidth = true;
                _PageNumberLabel.MinimumFontSize           = 12.0f;
                pageNumberView.AddSubview(_PageNumberLabel);
                bottomBar.AddSubview(pageNumberView);
            }
            return(bottomBar);
        }
Beispiel #12
0
        public void Show(ToastType type)
        {
            var image    = this.theSettings().images[type];
            var font     = UIFont.SystemFontOfSize(this.theSettings().fontSize);
            var str      = new NSAttributedString(this.text, font);
            var textSize = str.GetBoundingRect(new CGSize(260, 50), NSStringDrawingOptions.UsesLineFragmentOrigin, null).Size;

            textSize.Width = textSize.Width + 5;

            var label =
                new UILabel(new CGRect(0, 0, textSize.Width + this.LeftAndRightPadding,
                                       textSize.Height + this.TopAndBottomPadding))
            {
                BackgroundColor = UIColor.Clear,
                TextColor       = UIColor.White,
                TextAlignment   = UITextAlignment.Left,
                Text            = this.text,
                Lines           = 0,
                Font            = UIFont.SystemFontOfSize(this.theSettings().fontSize)
            };

            if (this.theSettings().useShadow)
            {
                label.ShadowColor  = UIColor.DarkGray;
                label.ShadowOffset = new CGSize(1, 1);
            }

            var button = new UIButton(UIButtonType.Custom);

            if (image != null)
            {
                button.Frame = this.ToastFrameForImageSize(image.Size, textSize);

                /*switch (this.theSettings().imageLocation)
                 * {
                 *  case ToastImageLocation.Left:*/
                label.TextAlignment = UITextAlignment.Left;
                label.Center        = new CGPoint(image.Size.Width + (this.LeftAndRightPadding * 2) + (((button.Frame.Size.Width - image.Size.Width) - (this.LeftAndRightPadding * 2)) / 2), button.Frame.Size.Height / 2);

                /*       break;
                 *
                 * case ToastImageLocation.Top:
                 *     label.TextAlignment = UITextAlignment.Center;
                 *     label.Center = new CGPoint(button.Frame.Size.Width / 2, (image.Size.Height + (this.TopAndBottomPadding * 2)) + (((button.Frame.Size.Height - image.Size.Height) - (this.TopAndBottomPadding * 2)) / 2));
                 *     break;
                 * }*/
            }
            else
            {
                button.Frame = new CGRect(0, 0, textSize.Width + (this.LeftAndRightPadding * 2), textSize.Height + (this.TopAndBottomPadding * 2));
                label.Center = new CGPoint(button.Frame.Size.Width / 2, button.Frame.Size.Height / 2);
            }

            var rect8 = label.Frame;

            rect8.X     = (nfloat)Math.Ceiling((double)rect8.X);
            rect8.Y     = (nfloat)Math.Ceiling((double)rect8.Y);
            label.Frame = rect8;
            button.AddSubview(label);

            if (image != null)
            {
                var view = new UIImageView(image);
                view.Frame = this.FrameForImage(type, button.Frame);
                button.AddSubview(view);
            }

            button.BackgroundColor    = UIColor.FromRGBA(this.theSettings().bgRed, this.theSettings().bgGreen, this.theSettings().bgBlue, this.theSettings().bgAlpha);
            button.Layer.CornerRadius = this.theSettings().cornerRadius;

            var window      = UIApplication.SharedApplication.Windows[0];
            var empty       = CGPoint.Empty;
            var orientation = UIApplication.SharedApplication.StatusBarOrientation;

            switch (this.theSettings().gravity)
            {
            case ToastGravity.Top:
                empty = new CGPoint(window.Frame.Size.Width / 2, 0x2d);
                break;

            case ToastGravity.Bottom:
                empty = new CGPoint(window.Frame.Size.Width / 2, window.Frame.Size.Height - 0x2d);
                break;

            case ToastGravity.Center:
                empty = new CGPoint(window.Frame.Size.Width / 2, window.Frame.Size.Height / 2);
                break;
            }

            empty         = new CGPoint(empty.X + this.theSettings().offsetLeft, empty.Y + this.theSettings().offsetTop);
            button.Center = empty;
            button.Frame  = RectangleFExtensions.Integral(button.Frame);

            var timer = NSTimer.CreateTimer(TimeSpan.FromSeconds(this.theSettings().duration / 1000), t => this.HideToast());

            NSRunLoop.Main.AddTimer(timer, 0);
            button.Tag = (nint)CURRENT_TOAST_TAG;

            var view2 = window.ViewWithTag((nint)CURRENT_TOAST_TAG);

            if (view2 != null)
            {
                view2.RemoveFromSuperview();
            }

            button.Alpha = 0;
            window.AddSubview(button);
            UIView.BeginAnimations(null, IntPtr.Zero);
            button.Alpha = 1;
            UIView.CommitAnimations();
            this.view = button;
            button.AddTarget(new EventHandler(this.HideToastEventHandler), UIControlEvent.TouchDown);
            ToastSetting.SharedSettings = null;
        }