UIPanelResetHelper(UIScrollView滚动复位)
原理
如果我们的UI中有滑动列表,并且列表比较长,那么不知道你们是否有这样需求,每次页面打开时,列表的滑动状态都恢复到默认状态。
如果要复位,其实就是修改UIPanel 的属性到初始状态。此组件做的工作就是在初始化时把UIPanel的属性保存起来,在需要时还原初始值,达到复位效果。
组件代码
using UnityEngine;
using System.Collections.Generic; /// <summary>
/// 方便对UIPanel进行滚动复位
/// 用法:
/// var panelResetHelper = UIPanelResetHelper.Create(m_uiPanel);
/// 页面重新打开时调用:panelResetHelper.ResetScroll();
/// by 赵青青
/// </summary>
public class UIPanelResetHelper
{
public UIPanel m_panel { get; private set; }
public Vector2 m_initPanelClipOffset { get; private set; }
public Vector3 m_initPanelLocalPos { get; private set; } public UIPanelResetHelper(UIPanel uiPanel)
{
if (uiPanel == null)
{
Debug.LogWarning("需要UIPanel,却传入了NULL,请检查");
return;
}
m_panel = uiPanel;
m_initPanelClipOffset = m_panel.clipOffset;
m_initPanelLocalPos = m_panel.cachedTransform.localPosition;
} public void ResetScroll()
{
if (m_panel == null) return;
m_panel.clipOffset = m_initPanelClipOffset;
m_panel.cachedTransform.localPosition = m_initPanelLocalPos;
} public static UIPanelResetHelper Create(Transform uiPanelTrans)
{
UIPanel uiPanel = uiPanelTrans.GetComponent<UIPanel>();
return Create(uiPanel);
} public static UIPanelResetHelper Create(UIPanel uiPanel)
{
return new UIPanelResetHelper(uiPanel);
}
}
使用方法
在打开页面时,调用resetscroll。
using UnityEngine;
using System.Collections; public class UIPayList : MonoBehaviour
{
public Transform m_ListPanel;
private UIPanelResetHelper m_PanelResetHelper; public void BindContrller()
{
//TODO 其它的绑定代码
if (m_ListPanel)
{
m_PanelResetHelper = UIPanelResetHelper.Create(m_ListPanel);
}
} public void OnOpen()
{
//打开时,对列表进行复位
ResetScroll();
} public void ResetScroll()
{
//NOTE 重设Scrollview的位置
if (m_PanelResetHelper != null) m_PanelResetHelper.ResetScroll();
}
}
UIPanelResetHelper(UIScrollView滚动复位)的更多相关文章
- UIScrollView 滑动复位
需求 在每次打开界面滑动列表都是复位状态(未滑动). 分析 在制作滑动列表时常常会结合UIPanel和UIScrollView 要让滑动列表回到未滑动时的位置,那么就需要改变Panel的Clippin ...
- UIScrollView滚动视图
一.基本知识 1.初始化 UIScrollView #import "ViewController.h" #define WIDTH[[UIScreen mainScreen]bo ...
- UIScrollView 滚动停止的时候一次调用此方法
//拖动返回选中的索引 当滚动视图停止时的时候 - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ CGFloat wid ...
- 改良UIScrollView滚动视图
#define HEIGHT self.view.frame.size.height #define WIDTH self.view.frame.size.width @interface V ...
- UIScrollView 滚动视图—IOS开发
转自:http://blog.csdn.net/iukey/article/details/7319314 UIScrollView 类负责所有基于 UIKit 的滚动操作. 一.创建 CGRect ...
- iOS UIScrollView 滚动到当前展示的视图居中展示
需求展示: 测试效果1 first uiscrollView 宽度 为屏幕宽度 滚动步长 为 scroll 宽度的1/3 分析: 这个是最普通版 无法使每一次滚动的结果子视图居中展示, WA ...
- UIScrollView滚动时隐藏底部导航栏问题
- (void)scrollViewDidScroll:(UIScrollView *)scrollView { NSLog(@"開始滚动"); int currentPostio ...
- unity3d-ngui UIScrollView 滚动方向与滚轮相反
生成一个滚动面板之后发现滚轮向上滚,界面向下:滚轮向下界面向上.在编辑窗口里发现这个选项 本来是-2,修改成正数就可以了. http://ju.outofmemory.cn/entry/146754
- IOS UIScrollView滚动到指定位置
[mScrollView setContentOffset:CGPointMake(0,200) animated:YES];
随机推荐
- C4.5(决策树)
C4.5是一系列用在机器学习和数据挖掘的分类问题中的算法.它的目标是监督学习:给定一个数据集,其中的每一个元组都能用一组属性值来描述,每一个元组属于一个互斥的类别中的某一类.C4.5的目标是通过学习, ...
- Python开发GIS的应用组件包
Library name Description Reason to install NumPy This adds support for large multidimensional arra ...
- 部署基于国际版Azure的SharePoint三层架构服务器场
前言 微软Azure国际版已经很普及了,这里没有用国内版(世纪互联),用的是国际版,当然是由于公司性质的缘故.这里一步步图文的方式,分享给大家创建Azure国际版的SharePoint三层架构的过程, ...
- SharePoint 2013 – Workflow Manager 1.0 offline download
[http://sharepointdeal.wordpress.com/2013/03/13/sharepoint-2013-workflow-manager-1-0-offline-downloa ...
- Java Android HTTP实现总结
Java Android HTTP实现总结 Http(Hypertext Transfer Protocol)超文本传输协议,是一个基于请求/响应模式的无状态的协议,Http1.1版给出了持续连接的机 ...
- iOS6、7、8、9新特性汇总和适配说明
iOS6新特性 一.关于内存警告 ios6中废除了viewDidUnload,viewWillUnload这两个系统回调,收到内存警告时在didReceiveMemoryWarning中进行相关的处理 ...
- iOS 单例传值遇见问题
单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 1.单例模式的要点: 显然单例模式的要点有三个:一是某个类只能有一个实例: ...
- Xcode常见错误汇总
1.error: macro names must be identifiers YourProject_prefix.pch 原因: 因为你弄脏了预处理器宏,在它处于<Multiple Val ...
- C语言中的变量
1. 计算机需要处理数据 2.数据需要保存在存储器上 3. 计算机只能识别0或者1的二进制数据 4.我们看到的,用到的所有数据在计算机中都是以二进制存储的 5.内存中的相同的01二进制数据,以不同的编 ...
- 【VLC-Android】vlc-android简例
前言 继续折腾vlc,做这个例子并不顺利,卡在只有声音没有图像这个问题好久,网上的例子有些API已经对不上,继续分享,,, 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cn ...