ScrollView优化

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class OptimizeScrollView
{
    static List<int> ids = new List<int>();
    static int _startIndex;
    static int _endIndex;
    /*  优化ScrollView以外的item对象,隐藏之 更新list
     *
     *
     *  constraint  是否是强制更新
     */
    public static void UpdateChange(UIScrollView uiscrollView, float startY, bool constraint = false)
    {
        UIGrid grid = uiscrollView.transform.FindChild("Grid").GetComponent<UIGrid>();
        float panelHeight = uiscrollView.GetComponent<UIPanel>().GetViewSize().y;
        Vector3 vec3 = uiscrollView.transform.localPosition;
        float sub = vec3.y - startY;

        ids.Clear();

        for (int i = 0; i < grid.transform.childCount; i++)
        {
            GameObject obj = grid.transform.GetChild(i).gameObject;
            Vector3 pos = obj.transform.localPosition;
            float start = Mathf.Abs(pos.y);
            float end = start + grid.cellHeight;
            if (start >= sub && end <= sub + panelHeight)
            {
                ids.Add(i);
            }
        }

        if (ids.Count > 0)
        {
            int id = ids[0];
            int startIndex = id;
            if (id > 0)
            {
                startIndex = id - 1;
            }

            id = ids[ids.Count - 1];
            int endIndex = id;
            if (id + 1 < grid.transform.childCount)
            {
                endIndex = id + 1;
            }
            if (constraint == false)
            {
                if (_startIndex == startIndex && _endIndex == endIndex)
                {
                    return;
                }
            }

            _startIndex = startIndex;
            _endIndex = endIndex;

            for (int i = 0; i < grid.transform.childCount; i++)
            {
                GameObject go = grid.transform.GetChild(i).gameObject;
                if (i == 0 || i == grid.transform.childCount - 1)
                {
                    if (!go.activeSelf)
                    {
                        go.SetActive(true);
                    }
                }
                else
                {
                    if (i >= startIndex && i <= endIndex)
                    {
                        if (!go.activeSelf)
                        {
                            go.SetActive(true);
                        }
                    }
                    else
                    {
                        if (go.activeSelf)
                        {
                            go.SetActive(false);
                        }
                    }
                }
            }
        }
    }
}
时间: 2024-08-27 10:11:12

ScrollView优化的相关文章

百度小程序性能优化

引子: 一个指标引发的血案 https://www.cnblogs.com/Sherlock09/p/11726885.html 性能优化 进入移动互联网时代,传统Web开发技术(HTML,CSS,JavaScript)风光不再,客户端技术(iOS以及Android)依靠良好的体验重新崛起.但是客户端技术的开发效率始终无法与Web技术抗衡,同时会受到诸多平台层面的限制.在这一大背景下,小程序独特的架构诞生了,它将Web前端技术与传统的客户端技术结合在一起,其目的是在开发效率上超过传统的客户端技术

IOS实现自动循环滚动广告--ScrollView的优化和封装

一.问题分析 在许多App中,我们都会见到循环滚动的视图,比如广告,其实想实现这个功能并不难,用ScrollView就可以轻松完成,但是在制作的过程中还存在几个小问题,如果能够正确的处理好这些小问题,无论从效果还是性能上都会得到优化. 问题一 第一个问题是如何用ScrollView来展示N个视图.想要实现这个效果,可以把N个视图依次按顺序添加到ScrollView上,然后把 ScrollView的contentSize设置为N个视图的尺寸,通过滑动ScrollView来查看加在上面的视图. 问题

iOS 小 Tip:优化侧滑返回与 ScrollView 的兼容性

http://www.cocoachina.com/ios/20150909/13369.html 作者:@周楷雯Kevin 授权本站转载. 倘若在 ViewController 中添加了一个 TableView,那么很可能在侧滑返回的时候,反而先触发了 TableView 的上下滚动,这一点是非常恼人的. 通过 requireGestureRecognizerToFail() 这个方法,就可以很好的处理这个问题. 1 2 3 4 5 6 7 8 9 if let gestures = navi

优化ScrollView

1 ////////////////////////////////////////////////////////////////////////// 2 // 乐探游戏版权所有 3 // 4 // 作者:THW 5 // 时间:2015/07/11 6 // 描述:自定义UITable 7 // 说明:主要用于多行多列的ScrollView 8 // 9 /////////////////////////////////////////////////////////////////////

android 弹性ScrollView(已优化)

想要的效果 最近项目中想实现一个效果,效果如下: 网上demo展示 就是上滑或者下滑,能实现弹性效果,刚开始在网上找了好几个demo,代码大致如下: public class BounceScrollView extends ScrollView { private View inner;// 孩子View private float y;// 点击时y坐标 private Rect normal = new Rect();// 矩形(这里只是个形式,只是用于判断是否需要动画.) private

iOS开发——项目实战总结&amp;UITableView性能优化与卡顿问题

UITableView性能优化与卡顿问题 1.最常用的就是cell的重用, 注册重用标识符 如果不重用cell时,每当一个cell显示到屏幕上时,就会重新创建一个新的cell 如果有很多数据的时候,就会堆积很多cell.如果重用cell,为cell创建一个ID 每当需要显示cell 的时候,都会先去缓冲池中寻找可循环利用的cell,如果没有再重新创建cell 2.避免cell的重新布局 cell的布局填充等操作 比较耗时,一般创建时就布局好 如可以将cell单独放到一个自定义类,初始化时就布局好

Android零基础入门第61节:滚动视图ScrollView

原文:Android零基础入门第61节:滚动视图ScrollView 前面几期学习了ProgressBar系列组件.ViewAnimator系列组件.Picker系列组件和时间日期系列组件,接下来几期继续来学习常见的其他组件. 一.ScrollView概述 从前面的学习有的同学可能已经发现,当拥有很多内容时屏幕显示不完,显示不全的部分完全看不见.但是在实际项目里面,很多内容都不止一个屏幕宽度或高度,那怎么办呢?那就需要本节学习的ScrollView来完成. 在默认情况下,ScrollView只是

Android性能优化篇

很多App都会遇到以下几个常见的性能问题: 启动速度慢:界面跳转慢:事件响应慢:滑动和动画卡顿. 一.启动速度优化. 优化初始化任务: 1. 把一些初始化任务懒加载初始化 2. 把初始化任务并行化(异步化) 3. 使初始化任务可以插拔(一个任务出问题不会影响到其他的任务) 其他: 1. 控制线程数量,注意线程的使用,用自己的线程池替换三方或者二方SDK的线程池,线程太多占用cpu资源, 2. 使用缓存来减少I/O操作(读数据库,读文件,SharedPreference)减少网络请求(判断无网络直

UITableView优化技巧

最近在微博上看到一个很好的开源项目VVeboTableViewDemo,是关于如何优化UITableView的.加上正好最近也在优化项目中的类似朋友圈功能这块,思考了很多关于UITableView的优化技巧,相信这块是难点也是痛点,所以决定详细的整理下我对优化UITableView的理解. UITableView作为iOS开发中最重要的控件之一,其中的实现原理很是考究.Apple在这块的优化水平直接决定了iOS的体验能甩安卓几条街,哈哈,扯淡扯多了...好了,废话不多说,直接进入主题.首先来谈谈