0
나는 이것이 매우 바보 같은 문제라고 확신합니다. UIView 하위 뷰로 UIImageView 추가하려고합니다. 내가 하위 뷰를 추가하는 시도하고 코드는 다음 코드 (A UIImageView
서브 클래스)가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];
}
}
대응 타일은 다음과 같습니다 이제
- (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>>"
)
이 작업을 수행 할 때 하위보기가 제대로 추가되었음을 보여줍니다. 그러나 subviews 실제로보기에 나타나지 않는다. 무엇이 문제일까요?
보기 자체를 계층 구조에 추가 했습니까? – borrrden
기본 UIView? 예. IB를 통해 추가했습니다. –
나는 해결책을 찾았다 고 생각한다. IB를 통해 추가 한 후 뷰 컨트롤러의 'viewDidLoad'에서 다시 초기화했습니다. 그리고 나서 UIView의 init 함수를 호출했습니다. 재 초기화 코드'self.gameView = [[TicTacToeView alloc] initWithFrame : CGRectMake (0, 0, 320, 320)];을 제거한 후, 이제는 잘 작동하고 있습니다! 재 초기화가 문제를 일으키는 이유는 무엇인지 혼란 스럽습니다. –