【问题标题】:iphone app scroll view is horizontal but i want it vertical - how do i change this?iphone 应用程序滚动视图是水平的,但我希望它是垂直的 - 我该如何更改?
【发布时间】:2010-03-23 12:11:21
【问题描述】:

从苹果开发者网站获得了这个viewscroller 的代码。

@synthesize scrollView1, scrollView2;

const CGFloat kScrollObjHeight  = 467.0;
const CGFloat kScrollObjWidth   = 320.0;
const NSUInteger kNumImages     = 6;


- (void)layoutScrollImages
{
    UIImageView *view = nil;
    NSArray *subviews = [scrollView1 subviews];


    // reposition all image subviews in a horizontal serial fashion
    CGFloat curXLoc = 0;
    for (view in subviews)
    {
        if ([view isKindOfClass:[UIImageView class]] && view.tag > 0)
        {
            CGRect frame = view.frame;
            frame.origin = CGPointMake(curXLoc, 0);
            view.frame = frame;

            curXLoc += (kScrollObjWidth);
        }
    }

    // set the content size so it can be scrollable
    [scrollView1 setContentSize:CGSizeMake((kNumImages * kScrollObjWidth), [scrollView1 bounds].size.height)];
}

它可以通过向左或向右拉动图像来旋转图像,效果非常好。但我想上下拉动图像以更改它们。

谁能帮我解决这个问题?代码中的这部分看起来好像控制方向,但我不确定如何更改它。

// reposition all image subviews in a horizontal serial fashion
    CGFloat curXLoc = 0;
    for (view in subviews)
    {
        if ([view isKindOfClass:[UIImageView class]] && view.tag > 0)
        {
            CGRect frame = view.frame;
            frame.origin = CGPointMake(curXLoc, 0);
            view.frame = frame;

            curXLoc += (kScrollObjWidth);
        }
    }

非常感谢任何帮助,谢谢!

比利

【问题讨论】:

    标签: iphone image uiscrollview


    【解决方案1】:

    要将滚动“方向”从水平更改为垂直,您基本上应该交换处理 x 和 y 坐标的方式。代码如下所示:

    - (void)layoutScrollImages
    {
        UIImageView *view = nil;
        NSArray *subviews = [scrollView1 subviews];
    
       // reposition all image subviews in a horizontal serial fashion
        CGFloat curYLoc = 0;
        for (view in subviews)
        {
            if ([view isKindOfClass:[UIImageView class]] && view.tag > 0)
            {
                CGRect frame = view.frame;
                frame.origin = CGPointMake(0, curYLoc);
                view.frame = frame;
    
                curYLoc += (kScrollObjHeight);
            }
        }
    
        // set the content size so it can be scrollable
        [scrollView1 setContentSize:CGSizeMake([scrollView1 bounds].size.width, kNumImages * kScrollObjHeight)];
    }
    

    【讨论】:

    • 您好弗拉基米尔,感谢您的回复。我已经尝试过您的代码,但出现 3 个错误:未声明 curXLoc、函数“CGSizeMake”的参数太少和“setContentSize”的参数太少你能帮帮我吗?比利
    • 抱歉打错了 - curXLoc 必须是 curYLoc 并且应该删除代码中多余的括号
    • 太棒了,谢谢!另一个问题,如果你不介意:) 现在滚动视图在顶部,你向上滑动手指移动到下一个视图。我怎样才能改变它,所以当我开始时我必须向下滚动?比利
    • 看来需要计算和设置合适的contentOffset(使用-setContentOffset方法)
    • 干杯!我所做的是 NSUInteger ScrollWidth = kNumImages * 390; (不知道为什么 390 但它只是工作)然后 [scrollView1 setContentOffset:CGPointMake(0,ScrollWidth) animated:YES];
    猜你喜欢
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 2015-08-04
    相关资源
    最近更新 更多