更改 UIScrollView 中间按钮的大小

Posted

技术标签:

【中文标题】更改 UIScrollView 中间按钮的大小【英文标题】:Change Size of button in the middle of a UIScrollView 【发布时间】:2013-03-12 18:29:33 【问题描述】:

我有一个包含多个按钮的 uiscrollview。当用户将按钮滚动到滚动视图的中间时,我需要更改它的大小。我以编程方式创建并添加了这些按钮,并为每个按钮分配了一个标签号。我只是不确定如何确定哪个按钮在中间,以便我可以更改它。有人做过这样的事吗?

【问题讨论】:

使用 scrollView.contentOffset 并将其与每个按钮的 frame.origin 进行比较? 【参考方案1】:

将下面的代码放在你想检查按钮是否在scrollView的中心。

for (UIView *view in scrollView.subviews) 

    if ([view isKindOfClass:[UIButton class]]) 

        CGRect visibleRect = CGRectMake(scrollView.contentOffset.x, scrollView.contentOffset.y, scrollView.frame.size.height, scrollView.frame.size.width);
        CGRect centerRect = CGRectInset(visibleRect, 30, 30);
        BOOL isCentered = CGRectIntersectsRect(view.frame, centerRect);

        if (isCentered) 
            // the button is centered in the scroll view...
        
    


isCentered 现在会告诉你按钮是否在滚动视图中居中。您必须将 30 值更改为适合您的滚动视图大小的任何值。

【讨论】:

我有这个工作,除了中心点不在可见滚动视图的中心,它似乎更靠近左侧。滚动视图为 320w x 105h,按钮为 50w x 50h。我也在检查 scrollViewDidScroll 委托。关于如何在滚动视图的中心而不是在左边那么远的任何想法?再次感谢您帮助我,您确实节省了我几个小时。

以上是关于更改 UIScrollView 中间按钮的大小的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView 跨设备 UI 兼容性

UIScrollView 内的水平 UIStackView 不滚动

更改 UIScrollView 内容大小

更改 startIcon / endIcon Material-UI 的大小

UIScrollView下的UIButton没有响应触摸

如何在旋转或调整大小时通过中间中心部分而不是左上角来维护 UIScrollView 的 contentOffset?