0
我相信这是一个非常愚蠢的问题。我正在尝试将UIImageView作为子视图添加到UIView。我试图添加子视图的代码是:UIView子视图不显示
for (int i = 0; i < kBoardSize; i++) {
for (int j = 0; j < kBoardSize; j++) {
Tile *t = [[Tile alloc] initWithPosition:CGPointMake(i, j) withSize:CGSizeMake(width, height)];
[self insertSubview:t atIndex:0];
//[self addSubview:t];
//[self bringSubviewToFront:t];
[temp addObject:t];
}
}
相应的瓷砖(这是一个UIImageView
子类)的代码是:
- (id) initWithPosition:(CGPoint)position withSize:(CGSize)size
{
self = [super initWithFrame:CGRectZero];
[self setFrame:CGRectMake(position.x * size.width, position.y * size.width, size.width, size.height)];
self.tag = position.x * kBoardSize + position.y;
[self setPiece:EMPTY];
if (self) {
[self.layer setBorderColor:[[UIColor blackColor] CGColor]];
[self.layer setBorderWidth:0.5];
}
return self;
}
现在,当我做
NSLog(@"%@", [[self subViews] description]);
2012-05-22 23:20:51.740 XXXXXXX[8204:f803] (
"<Tile: 0x6a79380; baseClass = UIImageView; frame = (0 0; 106.667 106.667); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x6a7ad70>>",
"<Tile: 0x6a94180; baseClass = UIImageView; frame = (0 106.667; 106.667 106.667); opaque = NO; userInteractionEnabled = NO; tag = 1; layer = <CALayer: 0x6a93e40>>",
"<Tile: 0x6a97da0; baseClass = UIImageView; frame = (0 213.333; 106.667 106.667); opaque = NO; userInteractionEnabled = NO; tag = 2; layer = <CALayer: 0x6a97de0>>",
"<Tile: 0x6a7aeb0; baseClass = UIImageView; frame = (106.667 0; 106.667 106.667); opaque = NO; userInteractionEnabled = NO; tag = 3; layer = <CALayer: 0x6a7aef0>>",
"<Tile: 0x6a94610; baseClass = UIImageView; frame = (106.667 106.667; 106.667 106.667); opaque = NO; userInteractionEnabled = NO; tag = 4; layer = <CALayer: 0x6a94650>>",
"<Tile: 0x6a946c0; baseClass = UIImageView; frame = (106.667 213.333; 106.667 106.667); opaque = NO; userInteractionEnabled = NO; tag = 5; layer = <CALayer: 0x6a94700>>",
"<Tile: 0x6a94770; baseClass = UIImageView; frame = (213.333 0; 106.667 106.667); opaque = NO; userInteractionEnabled = NO; tag = 6; layer = <CALayer: 0x6a947b0>>",
"<Tile: 0x6a94820; baseClass = UIImageView; frame = (213.333 106.667; 106.667 106.667); opaque = NO; userInteractionEnabled = NO; tag = 7; layer = <CALayer: 0x6a94860>>",
"<Tile: 0x6a948d0; baseClass = UIImageView; frame = (213.333 213.333; 106.667 106.667); opaque = NO; userInteractionEnabled = NO; tag = 8; layer = <CALayer: 0x6a94910>>"
)
它显示子视图已正确添加。但子视图并不实际显示在视图中。什么可能是这个问题?
您是否将视图本身添加到层次结构中? – borrrden
主要UIView?是。我通过IB添加了它。 –
我想我已经找到了解决方案。通过IB添加后,我在视图控制器的'viewDidLoad'中重新初始化它。然后我调用了我的UIView的init函数。在我删除了重新初始化代码'self.gameView = [[TicTacToeView alloc] initWithFrame:CGRectMake(0,0,320,320)];'它现在工作正常! Stil困惑,虽然为什么重新初始化导致问题。 –