0
UIScrollView
(サブタイトル:UIVewController
)にサブビューを追加していて、それらが想定しているように2 x 2
グリッドを形成していません。ここに私が使用しているコードの一部があります:UIScrollViewのサブビューをグリッドパターンで追加する
-(void)layoutSubviews{
BOOL blurbsHaveBorder = YES;
int blurbCount = 3;
int blurbsPerRow;
int viewWidth = gridView.bounds.size.width;
int viewHeight = gridView.bounds.size.height;
int blurbWidth = 320;
int blurbHeight = 320;
int spaceWidth = round((viewWidth -blurbWidth * blurbsPerRow)/(blurbsPerRow + 1));
int spaceHeight = spaceWidth;
int rowCount = ceil(blurbCount/(float)blurbsPerRow);
int rowHeight = blurbHeight + spaceHeight;
if (blurbsPerRow < 1) blurbsPerRow = 1;
NSInteger rowsPerView = viewHeight/rowHeight;
NSInteger topRow = gridView.contentOffset.y/rowHeight;
NSInteger bottomRow = topRow + rowsPerView;
NSInteger startAtIndex = topRow * blurbsPerRow;
NSInteger stopAtIndex = (bottomRow * blurbsPerRow) + blurbsPerRow;
if (stopAtIndex > blurbCount) stopAtIndex = blurbCount;
int x = spaceWidth;
int y = spaceHeight + (topRow * rowHeight);
int i;
/* add new subviews. */
for (int i = startAtIndex; i < stopAtIndex; i++) {
if (i >= 0) {
blurbItem = [[BlurbItem alloc] initWithFrame:CGRectMake(5,5,blurbWidth,blurbHeight)
andHasBorder:blurbsHaveBorder];
[gridView addSubview:blurbItem.view];
[blurbItem release];
}
}
/* adjust the position. */
if ((i+1) % blurbsPerRow == 0) {
/* start new row. */
x = spaceWidth;
y += blurbHeight + spaceHeight;
} else {
x += blurbWidth + spaceWidth;
}
}
はい、デフォルトは0になります。 – WrightsCS
私はゼロによる除算が得られていないのに驚いています。さらに、最初に初期化せずに使用しています。 – donkim