【问题标题】:add multiple views in scrollview在滚动视图中添加多个视图
【发布时间】:2011-08-17 18:49:28
【问题描述】:

我有一个 ScrollView,它会充满很多视图。

我的视图有背景,并且会收到动态数量的按钮。

我需要在我的 ScrollView 上添加这些视图。

每个视图都将放置在前一个视图之下。我的观点有 1024 x 197

我该怎么做?

提前感谢您的帮助。

更多详情

我已经在 Interface Builder 上创建了视图(我需要重复的那个)

@interface PortalBookViewController : UIViewController {
    UIView *prateleira;
    UIScrollView *ScrollView;
}

@property (nonatomic, retain) IBOutlet UIScrollView *ScrollView;
@property (nonatomic, retain) IBOutlet UIView *prateleira;

@end

我已将该视图(界面生成器)与 *prateleira 链接

- (void)viewDidLoad {
    [super viewDidLoad];


    for (int i = 0; i < 4; i++) {
        switch (i) {
            case 0:
                prateleira = [prateleira initWithFrame:CGRectMake(0, 0, 1024, 197)];
                [ScrollView addSubview:prateleira];
                [prateleira release];
                break;
            case 1:
                prateleira = [prateleira initWithFrame:CGRectMake(0, 198, 1024, 197)];
                [ScrollView addSubview:prateleira];
                [prateleira release];
                break;
            case 2:
                prateleira = [prateleira initWithFrame:CGRectMake(0, 384, 1024, 197)];
                [ScrollView addSubview:prateleira];
                [prateleira release];
                break;
                break;
            case 3:
                prateleira = [prateleira initWithFrame:CGRectMake(0, 582, 1024, 197)];
                [ScrollView addSubview:prateleira];
                [prateleira release];
                break;
                break;
            default:
                break;
        }
    }

    [ScrollView release];


}

模式详情

如果我这样做:[self.ScrollView addSubview:prateleira]; 它会告诉我这个:

我认为问题在于设置视图位置。

【问题讨论】:

    标签: objective-c view subview addsubview


    【解决方案1】:

    你像往常一样简单地添加它们:

    [self.myScroller addSubview:mytextview];

    在你设置了 textviews 框架之后。还是你的意思是别的?

    您必须计算循环中的帧,因此每个视图都添加到下一个视图的下方,如果这就是您的意思...

    最好, 马库斯

    【讨论】:

    • 谢谢马库斯,但如何更改视图在 ScrollView 上显示的位置?否则,它将在前一个之上
    • 如果它是一个文本视图,你可以像这样设置框架: UITextView *allocTextpart1 = [[UITextView alloc]initWithFrame:CGRectMake(0.0, 0.0, 300.0, 260.0)];下一个是这样的: UITextView *allocTextpart1 = [[UITextView alloc]initWithFrame:CGRectMake(0.0, 0.0, 300.0, 520.0)];所以第 2 帧的顶部 y 值位于 #1 的底部 y 值
    • 在循环中尝试 self.Scrollview,可能与范围有关
    • 不,您应该以编程方式执行此操作。添加(合成的)滚动视图,如下所示: UIScrollView *allocScollview = [[UIScrollView alloc] initWithFrame:CGRectMake(10.0, 50.0, 300.0, 370.0)]; [allocScollview 发布]; allocScollview.contentSize = CGSizeMake(300, 600); allocScollview.backgroundColor = [UIColor clearColor]; allocScollview.userInteractionEnabled = YES; self.Scrollview = allocScollview;
    • 您可以尝试将 UIView 更改为 UIViewController。否则,你可以把你的项目发给我,如果你愿意的话,我明天可以研究一下。
    【解决方案2】:

    使用 addSubview:

    [self.scrollView addSubview:myNewView];
    

    【讨论】:

    • 我知道,但是如何设置多个视图和一个低于前一个?
    【解决方案3】:

    解决方案是创建一个 uiview 对象,例如:

    UIView * shelf_view (NSInteger x, NSInteger y) {
    
        UIView *shelf = [[UIView alloc] initWithFrame:CGRectMake(x, y, 1024, 197)];
        UIImageView *background = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"shelf.png"]];
        [shelf addSubview:background];
        return shelf;
    
    }
    
    // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
    - (void)viewDidLoad {
    
        for (int i = 0; i < 4; i++) {
            switch (i) {
                case 0:
                    [ScrollView addSubview: shelf_view(0, 0)];
                    break;
                case 1:
                    [ScrollView addSubview: shelf_view(0, 197)];
                    break;
                case 2:
                    [ScrollView addSubview: shelf_view(0, 512)];
                    break;
                case 3:
                    [ScrollView addSubview: shelf_view(0, 777)];
                    break;
                default:
                    break;
            }
        }
        [super viewDidLoad];
        [ScrollView release];
    
    
    }
    

    效果很好。

    【讨论】:

      猜你喜欢
      • 2015-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-18
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多