gpt4 book ai didi

ios - 用随机位置的按钮填充 View

转载 作者:行者123 更新时间:2023-12-01 19:01:05 25 4
gpt4 key购买 nike

我想用按钮(UIView)填充区域(UIButton),这样它们就不会相互交叉。

我的点子:

  • 在 View 中的随机位置创建初始按钮;
  • 使用初始按钮(计数 < 20)中的其他按钮填充 View ,它们彼此不相交约 10 个像素。


  • 到目前为止我做了什么:

    我创建了方法:
    -(void)generateButtonsForView:(UIView *)view buttonCount:(int)count
    {
    //get size of main view
    float viewWidth = view.frame.size.width;
    float viewHeight = view.frame.size.height;

    //set button at random position
    UIButton *initialButton = [[UIButton alloc] initWithFrame:CGRectMake(arc4random() % (int)viewWidth,
    arc4random() % (int)viewHeight,
    buttonWidth, buttonHeight)];

    [initialButton setBackgroundImage:[UIImage imageNamed:@"button"] forState:UIControlStateNormal];

    [view addSubview:initialButton];

    // set count to 20 - max number of buttons on screen
    if (count > 20)
    count = 20;

    //fill view with buttons from initial button +- 10 pixels
    for (int i=0;i<=count;i++)
    {
    //button
    UIButton *otherButtons = [[UIButton alloc] init];
    [otherButtons setBackgroundImage:[UIImage imageNamed:@"button"] forState:UIControlStateNormal];

    ...//have no idea what to do here

    }
    }

    因此,我对要生成其他按钮位置的位置感到困惑,具体取决于初始按钮。我不知道如何生成他们彼此相距 5-10 像素的位置......任何想法如何实现这一点?谢谢!

    最佳答案

    这是一个使用 View 而不是按钮的示例,但概念是相同的。我使用 CGRectInset 为新的潜在 View 提供 10 个点的缓冲区,然后查看新 View 是否与其他任何 View 相交。如果没有交集,则添加 subview ,如果有,请使用新的随机位置重试。

    -(void)generateButtonsForView {
    float viewWidth = self.view.frame.size.width;
    float viewHeight = self.view.frame.size.height;

    UIView *initialView = [[UIView alloc] initWithFrame:CGRectMake(arc4random() % (int)viewWidth, arc4random() % (int)viewHeight, 50, 30)];
    initialView.backgroundColor = [UIColor redColor];
    [self.view addSubview:initialView];
    int numViews = 0;
    while (numViews < 19) {
    BOOL goodView = YES;
    UIView *candidateView = [[UIView alloc] initWithFrame:CGRectMake(arc4random() % (int)viewWidth, arc4random() % (int)viewHeight, 50, 30)];
    candidateView.backgroundColor = [UIColor redColor];
    for (UIView *placedView in self.view.subviews) {
    if (CGRectIntersectsRect(CGRectInset(candidateView.frame, -10, -10), placedView.frame)) {
    goodView = NO;
    break;
    }
    }
    if (goodView) {
    [self.view addSubview:candidateView];
    numViews += 1;
    }
    }
    }

    关于ios - 用随机位置的按钮填充 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22875806/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com