如何将 UIImageView 添加到 UIView(不是 UIViewController)?
Posted
技术标签:
【中文标题】如何将 UIImageView 添加到 UIView(不是 UIViewController)?【英文标题】:How to add a UIImageView to a UIView (not a UIViewController)? 【发布时间】:2011-09-20 09:34:22 【问题描述】:我创建了基于视图的应用程序。 我有一个sampleGameViewContrioller.xib,其中包含主视图和子视图,与行为类连接。
SampleViewController.xib:
查看 查看在 sampleViewContoller.m 中,我创建了 Behavior 类的实例:
Behavior *b = [[Behavior alloc] initilizeWithType:@"type" position:rect mapArray:arrMap];
行为.m:
-(id) initilizeWithType:(NSString *)type position:(CGRect) pos mapArray:(NSMutableArray *) mapArr
self = [super initWithFrame:CGRectMake(0, 0, 1024, 570)];
if (self != nil)
if ([type isEqualToString:@"type"])
arrMap = mapArr;
self.rectForDraw = pos;
self.file = [[NSString alloc]initWithString:@"girl.png"];
UIImageView *imgg = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"girl.png"]];
imgg.frame = rect;
[self addSubview:imgg];
timer = [NSTimer scheduledTimerWithTimeInterval:0.015 target:self selector:@selector(moving:) userInfo:nil repeats:YES];
return self;
但它不起作用。图片未添加到我的视图中。
如果我在 -(void)drawRect:(CGRect) rect 中添加 imageView,它可以工作:
- (void)drawRect:(CGRect)rect
self.img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"girl.png"]];
self.img.frame = CGRectMake(100, 100, 100, 100);
[self addSubview:self.img];
但我应该通过构造函数在 Behavior 类中发送绘图参数。如何使用我的构造函数添加没有方法drawRect的imageView?
对不起我的英语:)
【问题讨论】:
您能否澄清以下几点:在您的视图控制器中创建b
后,您将如何处理它?您在上一个代码 sn-p 中覆盖了哪个 drawRect
?这是Behavior
类吗?
我创建了一个类的实例来管理它们中的每一个。类绘制图像并按照自己的逻辑移动它。因此,创建了一个实例数组,每个实例负责移动图像。
>> 您在上一个代码 sn-p 中覆盖了哪个 drawRect?这是行为类吗?是的,在 Behavior 类中。但这只是一个示例
但是b
确实在某些时候被添加为视图控制器视图的子视图?你能显示你正在使用的实际代码吗?
一切正常)你可以在那里看到我的代码示例:file.qip.ru/get/sB1Iq7UX/sample.html
【参考方案1】:
如果您想在简单的 UIView 上添加图像视图,那么只需执行 [self.view addSubview:imageview];
如果您从 Behavior 类方法获取该图像,则从该方法返回 UIImageView 并将其添加到您的视图
试试这个:
Behavior *b = [[Behavior alloc] init];
然后在Behavior类中写一个方法
-(UIImageView*) initilizeWithType:(NSString *)type position:(CGRect) pos mapArray:(NSMutableArray *) mapArr
// Your Logic
return imgView; //UIImageView object
然后在你的视图控制器中调用这个方法
UIImageView *imgView=[b initilizeWithType:@"YOUR STRING" position:YOUR RECT pos mapArray:YOUR ARRAY ];
【讨论】:
消息:“在“行为 *”类型的对象上找不到属性“视图”” 将行为作为 UIView 的子类。或者你可以将方法的返回类型(在行为中)设置为 UIImageView 或者只是做[self addSubView:imageView]
-(id)initilizeWithType:(NSString *)type position:(CGRect) pos mapArray:(NSMutableArray *) mapArr UIImageView *imgg; .... return imgg;
不起作用
好吧,正如我已经写过的,[self addSubView:imageView]
也不起作用..
设置返回类型为 '-(UIImageView *)initilizeWithType:(NSString *)type position:(CGRect) pos mapArray:(NSMutableArray *) mapArr UIImageView *imgg; .... 返回 imgg; '【参考方案2】:
imgg.frame = rect;
这一行将您的 imageView 框架分配给...据我所知,什么都没有。这应该是pos
还是rectForDraw
?在 drawRect 中添加视图时,您明确设置了一个真实的框架,因此这可能就是不同之处所在。
【讨论】:
我错了。例如,我写了它。即使我写了'imgg.frame = CGRectmake(100, 100, 100, 100)',图像也不会出现。以上是关于如何将 UIImageView 添加到 UIView(不是 UIViewController)?的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式将 UIImageView 添加到 UIStackView(故事板)
如何将覆盖层添加到 UIImageView 但不在图像的透明部分?
如何将 UIImageView 添加到 UIView(不是 UIViewController)?