我在UITableViewCell上放了几个图标。图标的数量可以在1到6之间变化。图标不应该具有固定的X位置,而是应该考虑单元格空间动态放置它们。因此,如果有3个图标,它们应该看起来以细胞为中心。此外,图标间距也应该有所不同。例如,当它是6个图标时,它们之间的所有边距都会减少,当有3个边距时,边距将会更多,因此X位置也是如此。
请建议一些快速计算此框架的方法。我在iOS 6和iOS 7上运行该应用程序。
这是我到目前为止所尝试过的,但这似乎不适用于图标计数变化。此外,在空间之间不是动态的。
int maxIconTypes = 6;
CGFloat innerPadding = ([self isIOS7]) ? 15.0f : 9.0f;
CGRect adjustedBoundsIOS6 = [self bounds];
CGFloat adjustedWidth = ([self isIOS7]) ? self.bounds.size.width : adjustedBoundsIOS6.size.width;
CGFloat xOrigin = innerPadding;
CGFloat iconViewSize = 25.0f;
CGFloat ySpacer = (self.bounds.size.height - iconSize) / 2;
CGFloat xSpacer = ((adjustedWidth - (innerPadding * 2)) - (maxRequestTypes * iconViewSize)) / (maxIconTypes - 1);
for (NSString *icon in iconList) {
UIImageView *anIconView = [[UIImageView alloc] initWithImage:[UIImage icon]];
if (anIconView.image) {
anIconView.frame = CGRectMake(xOrigin + originPadding, ySpacer, anIconView.image.size.width, anIconView.image.size.height);
[self.contentView addSubview:anIconView];
xOrigin += anIconView.frame.size.width + xSpacer;
}
}
答案 0 :(得分:1)
无论你有多少项,如果你想在开始和结束时用半间距等间距,空格数是相同的:
half
width
full
width
half
half
width
full
width
full
width
half
因此,您只需要知道可用的全宽和项目的组合宽度。一个简单的乘法(得到项目的组合宽度)和减去(从可用的全宽度)给出“间隔”的剩余宽度。除以获得xSpacer
的项目数,将初始xOrigin
设置为xSpacer * 0.5
答案 1 :(得分:0)
这是Wain解释的一个例子:
//Im doing this in a UIView rather than in a UITableViewCell but idea is the same
int cellWidth = CGRectGetWidth(self.view.bounds);
//num of icons
int iconCount = 6;
//size of icon
int iconSize = 25;
//The max padding we can have
float maxPadding = (cellWidth - (iconSize * iconCount)) / iconCount;
//Our offset
float xOrigin = maxPadding / 2;
//Loooop
for (int i = 0; i < iconCount; i++) {
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(xOrigin, self.view.center.y, iconSize, iconSize)];
xOrigin += (iconSize + maxPadding);
label.backgroundColor = [UIColor blueColor];
[self.view addSubview:label];
}