objective-c - UIView subview 不显示

标签 objective-c ios uiview

我确信这是一个非常愚蠢的问题。我正在尝试将 UIImageView 作为 subview 添加到 UIView 中。我尝试添加 subview 的代码是:

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];
    }
}

相应的Tile(它是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>>"
)

这表明 subview 已正确添加。但 subview 实际上并没有显示在 View 中。可能是什么问题?

最佳答案

Vashishtha Jogi,你应该看看 The Designated initializer ,以及它是如何工作的。要点是,任何 initSomething 方法最终都会调用指定的初始化程序,因此正确调用它很重要。

关于objective-c - UIView subview 不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10714540/

相关文章:

objective-c - 如何查找 Mac/Cocoa/Obj-C 计算机上运行的其他应用程序的信息?

iphone - 离线正向地理编码

ios - 如何动态滚动到列表框的顶部

ios - 了解如何从 IB 初始化自定义 UIView

swift - 即使在同一 Controller 中, socket 为零

ios - 如何改变WKWebView中的文本选择颜色?

objective-c - 如何在 Mac 操作系统上将应用程序设置为默认应用程序?

ios - 如何在 iOS 11 的 UITextView 中禁用拖动

ios - 使 `UIView` 线在自身中心变成半圆

iphone - 如何在 UIImageView 中显示高分辨率图像