UIimage没有出现在iOS中的滚动视图上

Posted

技术标签:

【中文标题】UIimage没有出现在iOS中的滚动视图上【英文标题】:UIimage not appearing over scrollview in iOS 【发布时间】:2016-07-16 20:01:46 【问题描述】:

需要水平滚动滚动视图并在其下添加图像。 它正在水平滚动,但即使在更改背景后也看不到我的图像。请在下面找到代码:-

#import "ViewController.h"

@interface ViewController () <UIScrollViewDelegate>

@property (nonatomic , weak) IBOutlet UIScrollView *scrollView;

@end

@implementation ViewController

   - (void)viewDidLoad 
[super viewDidLoad];

for(int i=0; i<5; i++) 
    UIImageView *imageView = [[UIImageView alloc]  initWithFrame:CGRectMake((self.view.window.frame.size.width/5)*i, 0, self.view.window.frame.size.width/5, 48)];
    imageView.image = [UIImage imageNamed:@"t3"];
    imageView.backgroundColor = [UIColor blackColor];
    [_scrollView addSubview:imageView];


_scrollView.contentSize = CGSizeMake(self.view.window.frame.size.width, 48.0f);
[self.view addSubview:_scrollView];



- (void)didReceiveMemoryWarning 
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
      

@end

【问题讨论】:

【参考方案1】:

在循环中设置断点并检查图像视图的帧并检查图像“t3”是否实际正在加载。

您可以更改的其他内容,

    不需要使用self.view.window.frame,使用self.view.frame即可。 您将滚动视图添加到您的视图中,但它是一个 IBOutlet,如果您已经在情节提要或 xib 的层次结构中拥有它,则不需要这样做。

如果还有问题请留言,祝你好运。

【讨论】:

非常感谢..您不需要使用self.view.window.frame,只需使用self.view.frame。(这是问题) 酷,如果可能的话,你能帮忙接受我的回答吗,如果有任何问题,请告诉我。【参考方案2】:

问题是关于self.view.window

从 Apple 的文档中可以看出

如果视图尚未添加到窗口,则此属性为 nil

你还没有将self.view添加到窗口中,所以如果你使用

NSLog(@"self.view.window: %@", self.view.window);

日志将是

self.view.window: (null)

也就是说self.view.window.frame.size.width的值为0。

所以解决方法很简单:

使用self.view.frame.size.width 而不是self.view.window.frame.size.width

使用下面的代码将self.view 添加到窗口

[[[[UIApplication sharedApplication] windows] firstObject] addSubview:self.view]; 

【讨论】:

thanx mate.. 很好的解释

以上是关于UIimage没有出现在iOS中的滚动视图上的主要内容,如果未能解决你的问题,请参考以下文章

响应来自滚动视图 ios 5 内 UIImageView 数组的事件

使用 UIImage 放大滚动视图

iOS 控制中心触摸传递到我的滚动视图?

IOS:在滚动视图中添加图像视图以进行缩放

如何将 UIImage 从滚动视图拖动到视图

setContentOffset 到滚动视图中的 UIImage 位置