为啥我的 UIView 中没有显示任何内容?

Posted

技术标签:

【中文标题】为啥我的 UIView 中没有显示任何内容?【英文标题】:Why is nothing displaying in my UIView?为什么我的 UIView 中没有显示任何内容? 【发布时间】:2013-12-20 11:39:16 【问题描述】:

我有以下代码添加了一个 UIView,然后添加了一个 UIImageView 和 UILabel,UIView 显示正确,但我没有在视图中显示任何内容。我到处寻找,但找不到答案。 UIView 在特定条件下呈现,当它被点击时它会消失。

这是我的代码。

UIView *actionView = [[UIView alloc] initWithFrame:CGRectMake(20, 180, 280, 165)];
        UITapGestureRecognizer *singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
        [actionView addGestureRecognizer:singleFingerTap];
        actionView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5f];
        actionView.layer.cornerRadius = 5;
        actionView.layer.masksToBounds = YES;
        [self.view addSubview:actionView];
        UILabel *actionText = [[UILabel alloc] initWithFrame:CGRectMake(20, 180, 280, 165)];
        actionText.text = @"Hello";
        actionText.textColor = [UIColor redColor];
        actionText.textAlignment = NSTextAlignmentCenter;
        [actionText setTextColor:[UIColor redColor]];
        [actionText setBackgroundColor:[UIColor clearColor]];
        [actionText setFont:[UIFont fontWithName: @"Trebuchet MS" size: 14.0f]];
        actionText.Frame = CGRectMake(20, 180, 280, 165);
         [actionView addSubview:actionText];
        UIImage* image = [UIImage imageNamed:[NSString stringWithFormat:@"trash-icon.png"]];
        UIImageView* blockView = [[UIImageView alloc] initWithImage:image];
        blockView.frame = CGRectMake(109, 273, 40, 40);
      [actionView addSubview:blockView];

【问题讨论】:

您的标签框架和图像视图框架超出了 UIView 的范围。 【参考方案1】:

改变你的框架位置,比如..

    UILabel *actionText = [[UILabel alloc] initWithFrame:CGRectMake(20, 10, 280, 40)];
    actionText.text = @"Hello";
    actionText.textColor = [UIColor redColor];
    actionText.textAlignment = NSTextAlignmentCenter;
    [actionText setTextColor:[UIColor redColor]];
    [actionText setBackgroundColor:[UIColor clearColor]];
    [actionText setFont:[UIFont fontWithName: @"Trebuchet MS" size: 14.0f]];
    [actionView addSubview:actionText];

    UIImage* image = [UIImage imageNamed:[NSString stringWithFormat:@"trash-icon.png"]];
    UIImageView* blockView = [[UIImageView alloc] initWithImage:image];
    blockView.frame = CGRectMake(109,70, 40, 40);
    [actionView addSubview:blockView]; 

【讨论】:

【参考方案2】:

当您设置视图的框架时,请务必记住,原点与添加它的父视图的坐标系相关。

因此,当您将标签的框架设置为:

UILabel *actionText = [[UILabel alloc] initWithFrame:CGRectMake(20, 180, 280, 165)];

x = 20, y = 180 的原点最终成为 actionView 内的原点。现在这是您的问题,因为您的 actionView 只有 165px 高,并且您告诉 actionText 子视图它的 y 原点是 180,这远远超出了 actionView 的底部。

对于您的 actionText,您应该按如下方式分配它:

UILabel *actionText = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 280, 165)];

对于您的 blockView,类似于:

blockView.frame = CGRectMake(89,93, 40, 40);

【讨论】:

以上是关于为啥我的 UIView 中没有显示任何内容?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 UIView 在重新加载后没有响应?

为啥我的 RecyclerView 不显示任何内容?

为啥这个自定义 UIView 代码不显示 UILabel 的?

使用 iCarousel 时,我的自定义 UIView 显示但里面啥都没有?

为啥我的 UIView 子视图没有在父视图中呈现? (附代码)

为啥 uicollectionview 没有显示任何内容