将UIView添加到ScrollView以进行分页

时间:2015-09-03 02:09:33

标签: ios uiview uiscrollview xamarin.ios

如何将UIScollView内容作为UIView的内容?我想在UIView中设计应用布局,然后将该视图放入与UIScrollView相关联的UIPageControl以进行分页。因此,当用户向侧面滑动时,将显示下一个视图。我对如何实现这一点有一点想法,但我想在不浪费大量时间的情况下做到正确。

继承我的DetailViewController:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;

using UIKit;
using Foundation;
using CoreGraphics;
using CloudKit;

namespace RecordStorePro
{
    public partial class DetailViewController : UIViewController
    {
        public Record DetailRecord { get; set; }

        public DetailViewController (IntPtr handle) : base (handle)
        {
        }

        public void SetDetailRecord (Record record)
        {
            if (DetailRecord != record) {
                DetailRecord = record;

                // Update the view
                ConfigureView ();
            }
        }

        void ConfigureView ()
        {
            // Update the user interface for the detail item
            if (IsViewLoaded && DetailRecord != null) {
                //label.Text = DetailRecord.Album;
            }
        }

        public override void ViewDidLoad ()
        {
            base.ViewDidLoad ();
            // Perform any additional setup after loading the view, typically from a nib.

            NavigationItem.SetLeftBarButtonItem (new UIBarButtonItem(UIBarButtonSystemItem.Stop, (sender, args) => {
                NavigationController.PopViewController(true);
            }), true);

            ConfigureView ();

            //this.scrollview.BackgroundColor = UIColor.Gray;

            // set pages and content size
            scrollview.ContentSize = new SizeF ((float)(scrollview.Frame.Width * 2), (float)(scrollview.Frame.Height));
            //this.scrollview.AddSubview ();

            this.scrollview.Scrolled += ScrollEvent;
        }

        private void ScrollEvent(object sender, EventArgs e)
        {
            this.pagecontrol.CurrentPage = (int)System.Math.Floor(scrollview.ContentOffset.X / this.scrollview.Frame.Size.Width);
        }

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

因此,当我滑动屏幕时,我想要一个包含一些标签和文本字段的子视图,并替换原始标签和文本字段。它到目前为止工作正常,除了我无法弄清楚如何添加子视图,并使其大小适合不同的屏幕尺寸。

修改

继承人现在面临的问题,ScrollView中的观点很有趣,大约44f太高,所以他们让我上下拖动。我尝试设置各种约束,并手动将它们设置为-44较小,没有任何帮助。现在是一张问题的照片:

New Problem

下面是我的约束集的截图。

查看A: View A

查看B: View B

滚动型: ScrollView

笔尖视图: enter image description here

2 个答案:

答案 0 :(得分:1)

为此,您可能需要尝试以下步骤:

  1. 显示第一页的视图将被称为查看A 。显示第二页的视图将被称为 View B
  2. 将两个视图添加到滚动视图。
  3. 控制 -drag从视图A到侧栏中的滚动视图。
  4. 按住 Shift 并选择Top Space to SuperviewBottom Space to SuperviewLeading Space to Superview。接下来,按返回添加这些约束。
  5. 确保将这些约束的常量设置为0
  6. 控制 -drag从视图B到侧栏中的滚动视图。
  7. 按住 Shift 并选择Top Space to SuperviewBottom Space to SuperviewTrailing Space to Superview。接下来,按返回添加这些约束。
  8. 控制 -drag从视图A到侧边栏中的视图B.
  9. 选择Horizontal Spacing。确保其常量为0且其Second ItemView A.Trailing且其First ItemView B.Leading
  10. 控制 -drag从视图A到视图B在侧栏中。选择Equal Widths。确保常量为0
  11. 控制 -drag从视图A到侧栏中的滚动视图。选择Equal Widths。确保常量设置为0
  12. 在检查器中,选中“已启用分页”。Under the Scrolling header in the Attributes Inspector

答案 1 :(得分:0)

  

为每个页面添加没有pagingEnabled的subScrollView,并将控件添加到subScrollView中!如果您在启用分页的情况下直接向scrollview添加控件,那么手势识别器的第一响应者似乎始终是scrollview,因此您的控件永远不会获取事件并且表现得像禁用!

     

UIScrollView有一个名为“pagingEnabled”的属性

     

在Interface Builder中,调整滚动视图的大小以允许页面控件下方有一些空间。接下来,从库中拖动UIPageControl,在滚动视图下方居中。调整UIPageControl的大小以占据视图的整个宽度。