繁体   English   中英

如何从同一方法外部将按钮作为子视图添加到UIScrollView?

[英]How to add a button to a UIScrollView as a subView from outside the same method?

因此,我正在尝试使用一个简单的UIScrollView和一堆按钮。 我可以使用以下代码成功完成此任务:

- (void)viewDidLoad
{
    [super viewDidLoad];
    [_scroller setScrollEnabled:YES];
    [_scroller setContentSize:CGSizeMake(320, 1487)];

    UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, -500, 320, 2800)];
    [imgView setBackgroundColor:[UIColor blackColor]];
    [_scroller addSubview:imgView];


    UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [btn1 setTitle:@"Cool title" forState:UIControlStateNormal];
    [btn1 setFrame:CGRectMake(7, 7, 150, 160)];
    [btn1 setImage:[UIImage imageNamed:@"small.png"] forState:UIControlStateNormal];
    [btn1 addTarget:self action:@selector(btn1_m) forControlEvents:UIControlEventTouchUpInside];
    [_scroller addSubview:btn1];

但是,如果我通过界面生成器添加按钮而不是通过编程方式添加按钮怎么办? 每当我这样做时,滚动条就不再滚动!

例如,如果我在按住Control并拖动按钮后使用以下代码:

- (IBAction)theButton:(UIButton *)sender {
    [_scroller addSubview:sender];
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    [_scroller setScrollEnabled:YES];
    [_scroller setContentSize:CGSizeMake(320, 1487)];
}

...滚动不起作用,我看到该按钮,但没有任何滚动。 基本上,我只想使用界面生成器将按钮添加到我的应用程序中,并使它们也滚动,但似乎无法使它正常工作!

以编程方式创建UI时,滚动视图的子视图如下所示:

影像检视
纽扣
纽扣
...

当您使用IB添加按钮时,您将得到以下结果:

纽扣
纽扣
...
影像检视

将图像视图添加到滚动视图后,放置一个断点。 在LLDB控制台中,输入:

(lldb)po _scroller.subviews

我怀疑您会在列表底部看到图像视图。 它覆盖了您的按钮,但是却在滚动,它看起来像不是很大,因为它是一个大的黑色图像视图。

将图像视图发送到子视图列表的后面:

[_scroller sendSubviewToBack:imgView];

然后,您将再次看到您的按钮。 另外,完成此操作后,请在lldb中确认您的scrollview内容大小:

(lldb)p _scroller.contentSize

如果一切看起来正确,则应该正在滚动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM