ios – 如何使视图滚动?就像Instagram的个人资料

前端之家收集整理的这篇文章主要介绍了ios – 如何使视图滚动?就像Instagram的个人资料前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
UIView,SegmentedController& UIContainerView在ScrollView或类似的东西?

在我的故事板中,我有一个VC包含顶部的UIView,中间的分段控制器2个ContainerViewController在底部嵌入了segue的新VC.

在新的VC中,我有一个TableView&一个CollectionView(例如,Instagram的个人资料).

我的问题是,我需要SegmentedController和UIView滚动与ContainerView(TableView / CollectionView),目前只有ContainerView部分滚动,上面的部分是固定的.

现在我猜想我可能需要将所有内容都放在UIScrollView中,所以我试过了正确地放置所有的约束但是当它在Swift文件中进行配置时,我现在只是真的如何设置滚动的高度,但是很显然,我需要的高度可以有所不同而不是一个固定的高度!

如果有任何人可以帮助我,这将是太棒了,或者也许指向我已经在这里问过的一个类似的问题?我已经看了,但没有找到什么不幸!

这是一个下面的图片,基本上解释了我以后,如果上面我不是很清楚..

这里是一个你可以看到的例子:https://github.com/Jackksun/ScrollIssue

解决方法

所以据我所知,你想让你的滚动视图接触到它的界限之外.您可以通过覆盖hitTest:实际接收触摸的视图上的withEvent:方法来实现此目的.

这是我在项目中做的一个例子.我将UIView子类化并将其接收的所有触摸重定向到特定视图.在您的情况下,您将重定向所有触摸到滚动视图.

.h file:

@import UIKit.UIView;

/*!
 @class         TouchableView
 @abstract      Touchable view.
 */
@interface TouchableView : UIView

/*!
 @property      viewToReceiveTouches
 @abstract      View that receives touches instead of a given view.
 */
@property (nonatomic,weak) IBOutlet UIView *viewToReceiveTouches;

@end
.m file:

@import UIKit.UIButton;
@import UIKit.UITableView;
@import UIKit.UITextField;

#import "TouchableView.h"

@implementation TouchableView

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    if ( [self shouldViewReceiveTouch:self inPoint:point] )
    {
        return [super hitTest:point withEvent:event];
    }
    else if ( CGRectContainsPoint(self.bounds,point) && self.isUserInteractionEnabled )
    {
        return self.viewToReceiveTouches;
    }

    return nil;
}

- (BOOL)shouldViewReceiveTouch:(UIView *)view inPoint:(CGPoint)point
{
    if ( !CGRectContainsPoint(view.bounds,point) || !view.isUserInteractionEnabled )
    {
        return NO;
    }

    if ( [view isKindOfClass:[UIButton class]] ||
         [view isKindOfClass:[UITextField class]] ||
         [view isKindOfClass:[UITableViewCell class]] ||
         [view isKindOfClass:[UITableView class]] )

    {
        return YES;
    }

    for ( UIView *subview in view.subviews )
    {
        if ( [self shouldViewReceiveTouch:subview inPoint:[view convertPoint:point toView:subview]] )
        {
            return YES;
        }
    }

    return NO;
}

@end

猜你在找的iOS相关文章