ios - 创建自定义大小的 View Xamarin.iOS

标签 ios uiview xamarin.ios

我在 Xamarin 中创建了一个带有支持类的 View ,想知道我是否可以创建该类的一个 CGRect 大小的实例。我现在有以下代码:

using System;
using CoreGraphics;
using Foundation;
using UIKit;

namespace SimpleScroll.iOS
{
    public partial class ViewController : UIViewController
    {
        public ViewController(IntPtr handle) : base(handle)
        {

        }

        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            // Perform any additional setup after loading the view, typically from a nib.

            // UIScrollView with same width and height as ViewController
            var mainScrollView = new UIScrollView(new CGRect(0, 0, this.View.Frame.Size.Width, this.View.Frame.Size.Height));

            // Enable pagination and set other attributes
            mainScrollView.PagingEnabled = true;
            mainScrollView.ShowsVerticalScrollIndicator = false;
            mainScrollView.ShowsHorizontalScrollIndicator = false;
            mainScrollView.Bounces = false;

            int numberOfViews = 2;
            for (int i = 0; i < numberOfViews; i++)
            {
                nfloat xOrigin = i * this.View.Frame.Size.Width;
                var subView = new UIView(new CGRect(xOrigin, 0, this.View.Frame.Size.Width, this.View.Frame.Size.Height));
                subView.BackgroundColor = UIColor.FromRGBA(0.5f / i, 0.5f, 0.5f, 1);
                mainScrollView.AddSubview(subView);
            }

            mainScrollView.ContentSize = new CGSize(this.View.Frame.Size.Width * numberOfViews, this.View.Frame.Size.Height);
            this.View.AddSubview(mainScrollView);
        }

        public override void DidReceiveMemoryWarning()
        {
            base.DidReceiveMemoryWarning();
            // Release any cached data, images, etc that aren't in use.     
        }
    }
}

不是 var subView = new UIView(new CGRect(xOrigin, 0, this.View.Frame.Size.Width, this.View.Frame.Size.Height));,我会可以用我自己创建的 Menu 类做同样的事情吗?我怎样才能为 Menu 提供它自己的构造函数,以便我可以按照 var subView = new Menu(new CGRect(...)); 的方式做一些事情?

最佳答案

只需子类化 uiview 并覆盖框架构造函数

[Foundation.Register("Menu")]
public class Menu : UIView
{
  public Menu(CGRect frame) : base(frame)
  {

  }
}

关于ios - 创建自定义大小的 View Xamarin.iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42933006/

相关文章:

ios - 为iOS构建静态库以进行销售

iphone - iOS:使用 sizeWithFont:constrainedToSize:lineBreakMode 的 UILabel 动态高度:不起作用

ios - 有关如何将 Greystripe 广告与 MonoTouch 结合使用的文档

mono - iOS 6 Mono 和向后兼容性

.net - 单点触控 : How to protect my application

ios - UICollectionView 没有滚动到前几个项目的底部

iOS:UI测试+持续集成?

uiview - 如何获取实际的[UIScreen mainScreen]框架大小?

ios - 向 UIImage 添加宽度?

iOS:在屏幕上镜像内容