如何在 UIButtons 之间添加间距 [关闭]

Posted

技术标签:

【中文标题】如何在 UIButtons 之间添加间距 [关闭]【英文标题】:How to add spacing between UIButtons [closed] 【发布时间】:2013-01-08 12:31:04 【问题描述】:

我正在使用以下代码添加一系列带有数组的 UIButton。我想知道是否有办法在每个按钮之间添加一些间距,因为它们目前靠得太近了。

这是我的代码,感谢您的帮助:

 // Create buttons for the sliding category menu.
    buttonArray = [NSMutableArray array];
    myImages = [NSArray arrayWithObjects:@"category-cafe-unsel.png", @"category-food-unsel.png", @"category-clothing-unsel.png", @"category-health-unsel.png", @"category-tech-unsel_phone.png" , @"category-tech2-unsel.png", @"catefory-theatre-unsel.png", @"category-travel-unsel.png", nil];

    myImagesSel = [NSArray arrayWithObjects:@"category-cafe-sel.png", @"category-food-sel.png", @"category-clothing-sel.png", @"category-health-sel.png", @"category-tech-sel_phone.png" , @"category-tech2-sel.png", @"catefory-theatre-sel.png", @"category-travel-sel.png", nil];

    // only create the amount of buttons based on the image array count
    for(int i = 0;i < [myImages count]; i++)
    
        // Custom UIButton

        btn.tag  = i+1;

        btn = [UIButton buttonWithType:UIButtonTypeCustom];

        [btn setFrame:CGRectMake(0.0f, 20.0f, 52.0f, 52.0f)];
        [btn setTitle:[NSString stringWithFormat:@"Button %d", i] forState:UIControlStateNormal];
        [btn setImage:[UIImage imageNamed:[myImages objectAtIndex:i]] forState:UIControlStateNormal];
        [btn setImage:[UIImage imageNamed:[myImagesSel objectAtIndex:i]] forState:UIControlStateSelected];

        NSLog(@"The button title is %@ ", btn.titleLabel.text);

        [btn addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
        [buttonArray addObject:btn];


     //   NSLog(@"Button tag is: %d",btn.tag);

    

    UIImageView *blackColor = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"blackColor.png"]];


    // initialize the slide menu by passing a suitable frame, background color and an array of buttons.
    slideMenuView = [[SlideMenuView alloc] initWithFrameColorAndButtons:CGRectMake(0.0f, 0.0f, 320.0f, 80.0f) backgroundColor:[UIColor clearColor]  buttons:buttonArray];

【问题讨论】:

您已将所有按钮的框架设置为相同,这就是为什么您可能会使按钮相互重叠 谢谢。它们没有重叠,只是太近了。我只需要每个之间有一个 5 像素的空间。知道我该怎么做吗? :) 水平还是垂直?此外,如果您使用上面的代码,按钮将重叠,正如@Leena 所说的那样 我认为间距将取决于 slideMenuView 并且您在 slideMenuView 中绘制按钮...... 按钮之间需要水平或垂直间隙吗? 【参考方案1】:

试试这个:[btn setFrame:CGRectMake(0.0f, i*25.0f, 52.0f, 52.0f)]; 你会得到按钮之间 5 像素的间距

【讨论】:

谢谢,但那反而有一种奇怪的垂直效果 此代码示例允许您将按钮放置在一条垂直线上。 i*25.0f 表示下一个按钮 Y 位置。您也可以通过将此表达式作为第一个参数传递来更改 X 位置。您也可以从 25.0f 更改为任何其他值来移动下一个按钮底部或右侧 我试过了,但 X 值没有任何变化 对不起))我没有看你代码的最后一行。我看到你正在使用第三方“SlideMenuView”你应该修复这个类而不是修复所有所说的。您使用的是最后一个来源吗? here 的最新代码应该符合您的需要【参考方案2】:

用途:

垂直间距:

 [btn setFrame:CGRectMake(0.0f, (20.0f + ((52.0 * i) +5)), 52.0f, 52.0f)];

水平间距

if(i==0)

   [btn setFrame:CGRectMake(0.0, 52.0, 52.0f, 52.0f)];

else

   [btn setFrame:CGRectMake((52.0+(52.0 * i)+5), 52.0, 52.0f, 52.0f)];

【讨论】:

@hanumanDev:这是一个错字,已修复! 谢谢,但这将取消按钮系列向下移动并且没有在每个单独的按钮之间添加间距(水平是我正在使用的那个):) 按钮被按下是因为 Y 值是 52.0 而不是 20。我改变了它,但是按钮间距仍然没有显示 @hanumanDev:感谢您的评论,我发现问题也解决了 @hanumanDev:还有问题吗?【参考方案3】:

试试这个:-

[btn setFrame:CGRectMake(0.0f+54*i, 20.0f, 52.0f, 52.0f)];

【讨论】:

以上是关于如何在 UIButtons 之间添加间距 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 如何在水平 StackView 中设置可变数量按钮之间的间距?

如何在 Swift 的 UIScrollView 中的视图之间添加填充? [关闭]

单元格 UICollectionView 之间的间距不正确

如何在表格的某些列之间添加间距?

如何在 ExpansionPanelList 中的标题之间添加间距?

在 UIStackView 中的 UIButtons 之间添加空间的最佳方法是啥