UIImageView(以编程方式创建)未显示

Posted

技术标签:

【中文标题】UIImageView(以编程方式创建)未显示【英文标题】:UIImageView (created programmatically) is not showing up 【发布时间】:2013-12-07 21:18:28 【问题描述】:

我正在尝试以编程方式将 UIImageView 添加到我的模态视图控制器中,但图像根本不显示。我只看到白色背景。其余的工作正常,因为我能够加载或关闭视图。我的代码如下:

[super viewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor = [UIColor whiteColor];

UIImageView *imageView = [[[UIImageView alloc] init] initWithFrame:CGRectMake(100, 200, 100, 100)];
imageView.image = [UIImage imageNamed:@"IMG_0352.PNG"];
[self.view addSubview:imageView];


UISwipeGestureRecognizer *swipeleft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)];
swipeleft.direction = UISwipeGestureRecognizerDirectionLeft;
[self.view addGestureRecognizer:swipeleft];

UISwipeGestureRecognizer *swiperight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)];
swiperight.direction = UISwipeGestureRecognizerDirectionRight;
[self.view addGestureRecognizer:swiperight];


UIBarButtonItem *dismiss_btn = [[UIBarButtonItem alloc] initWithTitle:@"Start App" style:UIBarButtonItemStylePlain target:self action:@selector(dismissModal:)];

self.navigationItem.rightBarButtonItems = [NSMutableArray arrayWithObjects:dismiss_btn, nil];

【问题讨论】:

这应该可以...尝试为imageView添加一个backgroundColor,以检查问题是否在正在显示的图像中或在imageView的位置 全部大写的图片名是否正确? 除了@HaniIbrahim 建议的背景颜色,我还推荐一些NSLog 输出,检查imageView.image 是否为空。 谢谢大家。下面的 staticVoidMan 评论实际上解决了它。 Thare 是一个错字,因为我同时使用了“init”和“initWithFrame”:-) 【参考方案1】:

一个严重的问题是这一行:

UIImageView *imageView = [[[UIImageView alloc] init] initWithFrame:CGRectMake(100, 200, 100, 100)];

必须是:

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 200, 100, 100)];

你有一个额外的电话给init

还要确保文件名确实命名为IMG_0352.PNG。案件很重要。确保它不是真正的 IMG_0352.png 或类似的东西。

当然,请确保您确实将这样的图像打包到您的应用程序中。确保它在您的目标的“构建阶段”的“复制捆绑资源”部分下列出。

【讨论】:

【参考方案2】:

你需要放弃

UIImageView *imageView = [[[UIImageView alloc] init] initWithFrame:CGRectMake(100, 200, 100, 100)];

因为...好吧...init] initWithFrame: 看起来像一个错字下面是初始化UIImageView 的更好方法:

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"IMG_0352.PNG"]];

参考:UIImageView only displays when I call initWithImage

【讨论】:

如果图像视图需要与图像不同的大小,这并不好。 并且还需要设置框架。或者视图应该如何知道放置它的位置? @visualication :为此我们有 setFrame。至少我总是只是简单地初始化并稍后setFrame @rmaddy :答案是针对具体情况的。他的代码并没有表明他稍后也会重置图像,他的手势是在 self.view 而不是imageView @staticVoidMan 我的意思是图像的尺寸不是 100x100。此外,无论如何都需要设置框架。使用initWithFrame: 然后调用setImage: 没有任何问题。【参考方案3】:

imageView 正在初始化两次。尝试删除一个init

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 200, 100, 100)];

在将图像添加到图像文件夹时,检查图像/文件夹是否在 Xcode 中作为“创建组”选项添加,而不是使用“创建文件夹引用”。 文件夹引用只会提供链接或引用,因此您实际上无法访问文件夹中的元素。

【讨论】:

以上是关于UIImageView(以编程方式创建)未显示的主要内容,如果未能解决你的问题,请参考以下文章

如果以编程方式创建,则无法访问 UIImageView

如何以编程方式将 UIImageView 缩放到固定宽度和灵活高度?

快速以编程方式创建后如何在情节提要中链接 UIButton

如何以编程方式更改使用自动布局在情节提要上创建的 UIImageView 的大小?

以编程方式创建并添加到 uiimageview 时,UIButton 无响应

如何以编程方式在方板上创建多个 UIImageView