【问题标题】:How to add slide animation?如何添加幻灯片动画?
【发布时间】:2019-11-16 06:16:33
【问题描述】:

我可以制作这样的动画吗:滑动到顶部隐藏视图并展开表格视图。向下滑动显示视图。

我在下面的屏幕截图中说明了我想要的:

【问题讨论】:

  • 你的意思是你想在你的表格视图上添加一个标题?
  • 不,它是带有日历和一些数据的自定义视图
  • 不是直接答案,而是:创建一个表,第 0 行 - 您的视图,第 0 行也是 - 您的表。现在设置初始表 TranslationY,使其不会覆盖您的视图。添加滑动手势识别器,使用 YourTable.TranslateTo(0,0, easing sinout ) 打开表格,使用 YourTable.TranslateTo(0,YourInitialTableY, easing sinout ) 关闭表格

标签: ios uitableview xamarin uiview xamarin.ios


【解决方案1】:

在Xamarin IOS中,你可以试试UIScrollView。设置PagingEnabled,可以实现你的愿望。(在StoryBoard中关注ScrollView也是全屏的)

ScrollView.ContentSize = new CGSize(UIScreen.MainScreen.Bounds.Size.Width, 2*ScrollView.Bounds.Size.Height);
ScrollView.PagingEnabled = true;

表格视图代码:

UITableView uITableView = new UITableView(new CGRect(0, ScrollView.Bounds.Size.Height, UIScreen.MainScreen.Bounds.Size.Width, ScrollView.Bounds.Size.Height));
string[] tableItems = new string[] { "Vegetables", "Fruits", "Flower Buds", "Legumes", "Bulbs", "Tubers", "Vegetables", "Fruits", "Flower Buds", "Legumes", "Bulbs", "Tubers"};
uITableView.BackgroundColor = UIColor.Cyan;
uITableView.Source = new TableSource(tableItems);

public class TableSource : UITableViewSource
{
    string[] TableItems;
    string CellIdentifier = "TableCell";

    public TableSource(string[] items)
    {
        TableItems = items;
    }
    public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
    {
        UITableViewCell cell = tableView.DequeueReusableCell(CellIdentifier);
        string item = TableItems[indexPath.Row];

        //---- if there are no cells to reuse, create a new one
        if (cell == null)
        { cell = new UITableViewCell(UITableViewCellStyle.Default, CellIdentifier); }

        cell.TextLabel.Text = item;

        return cell;
    }

    public override nint RowsInSection(UITableView tableview, nint section)
    {
        return TableItems.Length;
    }
}

自定义向上视图:

UIView upView = new UIView(new CGRect(0, 0, UIScreen.MainScreen.Bounds.Size.Width, ScrollView.Bounds.Size.Height));
upView.BackgroundColor = UIColor.DarkGray;

最后在 ScrollView 中添加它们:

ScrollView.Add(upView);
ScrollView.Add(uITableView);

图片展示如下:(为了更好的在ScrollView中展示不同的页面,设置upView和uITableView的背景色)

进入这个控制器时,设置ContentOffSet为第二页,然后会先显示tableview,向下滚动时会显示upView。

ScrollView.SetContentOffset(new CGPoint(0, ScrollView.Bounds.Size.Height), true);

如果想在滚动的时候添加Animation,加一个Delegate来监听DraggingStarted

ScrollView.Delegate = new ScrollViewDelegate();

public class ScrollViewDelegate :UIScrollViewDelegate
{


    public override void DraggingStarted(UIScrollView scrollView)
    {
        //base.DraggingStarted(scrollView);
        if(scrollView.ContentOffset.Y == scrollView.Bounds.Size.Height)
        {
            //Add Animation herer
        }
    }
}

【讨论】:

    猜你喜欢
    • 2020-10-31
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 2018-01-12
    • 2012-05-12
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多