将 UIImage 视图作为子视图添加到 UIView 的实例

Posted

技术标签:

【中文标题】将 UIImage 视图作为子视图添加到 UIView 的实例【英文标题】:Adding a UIImage View as a subView to an instance of UIView 【发布时间】:2013-07-09 20:19:20 【问题描述】:

我正在练习初学者代码,因为我是新手,在这里我遇到了很多困惑......这就是我到目前为止所拥有的

UIView *catView = [[UIView alloc] init];
UIImage *image = [UIImage imageNamed:@"lolcat.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[catView.view addSubview:imageView];

我不明白这里出了什么问题以及为什么有问题,有人可以帮忙吗?

【问题讨论】:

你看到发生了什么?我猜你的catView 有一个零帧,所以不会显示得太好 它是一个名为 Treehouse 的学习网站的代码挑战的一部分,因此编辑器在线并且不显示模拟:( 所以网站只是告诉你出了点问题,然后问你什么?您可以将代码复制到项目中并尝试运行它... [catView.view addSubview:imageView]; 需要是[catView addSubview:imageView];。并且需要设置catView的框架。 【参考方案1】:
//You need to specify the frame of the view   
UIView *catView = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,400)];

UIImage *image = [UIImage imageNamed:@"lolcat.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];

//specify the frame of the imageView in the superview , here it will fill the superview
imageView.frame = catView.bounds;

// add the imageview to the superview
[catView addSubview:imageView];

//add the view to the main view

[self.view addSubview:catView];

【讨论】:

catView 没有 view 属性。 哦,是的,我看到了,但是当我评论代码时忘记删除它【参考方案2】:

有趣而微妙的音符。如果视图已添加到 .xib 文件中,则视图是“弱”的,您需要使用临时变量进行交换。还有一些简单的数学运算可以让坐标与您在视图中设置的坐标相匹配:

@property (weak, nonatomic) IBOutlet UIImageView *imageView1;
@property (weak, nonatomic) IBOutlet UIImageView *imageView2;
CGRect tempFrame; 

tempFrame = self.imageView1.frame;

CGRect tempFrame;   // use bounds instead

tempFrame = self.imageView2.frame;

__strong UIImageView * tempView = self.imageView2;
[self.imageView2 willMoveToSuperview: nil];
[self.imageView2 removeFromSuperview];
[self.imageView2 willMoveToSuperview: self.imageView1];
[self.imageViewSkate addSubview: self.imageViewBall];
self.imageView2.frame = CGRectMake(tempFrame.origin.x - self.imageView1.frame.origin.x,
                                      tempFrame.origin.y - self.imageView1.frame.origin.y,
                                      tempFrame.size.width, tempFrame.size.height);
tempView = nil;

【讨论】:

以上是关于将 UIImage 视图作为子视图添加到 UIView 的实例的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Quartz 在 UIView 上绘制子视图

我应该将底部工作表作为子视图添加到当前视图控制器还是推送添加了子视图的 UIWindow?

滚动视图不显示 UIView 和 UIImage

iOS - Interface Builder - 将元素作为子视图添加到 UIView

如何将collectionview作为子视图添加到viewcontroller

如何在不将其添加到子视图的情况下截取 uiview?