添加UIImageView到UIView
问题描述:
我一直坚持这一段时间,所以任何帮助将不胜感激。添加UIImageView到UIView
我基本上做了一个叫做shape的类,它是一个UIView
,我想添加一个UIImageView
到那个UIView
。
这里是我的.h文件:
@interface Shape : UIView {
int blockWidth;
int blockHeight;
NSString *colour;
IBOutlet UIImageView *blockView;
}
@property (nonatomic, retain) IBOutlet UIImageView *blockView;
@property (nonatomic, retain) NSString *colour;
-(void)setColour:(NSString *)colour;
-(void)createShape:(int)blocksX :(int)blocksY;
@end
这里是我的.m文件:
@implementation Shape
@synthesize blockView;
@synthesize colour;
- (void)setColour:(NSString *)colour{
NSLog(@"Colour: %@", colour);
}
-(void)createShape:(int)blocksX :(int)blocksY{
self.frame = CGRectMake(0, 0, 200, 200);
blockView.frame = CGRectMake(0, 0, 100, 100);
self.backgroundColor = [UIColor greenColor];
blockView.backgroundColor = [UIColor redColor];
[self addSubview:blockView];
}
- (void)dealloc {
[blockView release];
[colour release];
[super dealloc];
}
@end
非常感谢!
嘿再次抱歉,如果这是令人困惑的,但我试图将此C代码转换为目标,上面的代码是我的第一次尝试,显然没有需要完成的地方,但你可以看到我想要达到的目标,抱歉,但是我完全新的目标C,它是我使用其他语言完全不同:S
public class Shape : UIView
{
public UIImageView blockView;
private int blockWidth = 40;
private int blockHeight = 40;
public Shape (int startX, int startY ,string colour, int blocksX, int blocksY)
{
Console.WriteLine("Colour: "+colour+" Blocks: "+blocksX+" "+blocksY);
this.Frame = new RectangleF(startX,startY,blockWidth*blocksX,blockHeight*blocksY);
this.UserInteractionEnabled = true;
for(int i = 0; i<blocksX; i++)
{
for(int j = 0; j<blocksY; j++)
{
blockView = new UIImageView(UIImage.FromFile("Images/Blocks/"+colour+"block.jpg"));
blockView.Frame = new RectangleF(blockWidth*i,blockHeight*j,blockWidth,blockHeight);
Console.WriteLine("I: "+i+" J: "+j);
this.AddSubview(blockView);
}
}
}
答
(删除旧文本)
其实,你在你的C#代码ISN做什么在Objective-C中不同的是(这个代码没有经过测试!):
在头文件:
#import <UIKit/UIKit.h>
@interface ShapeView : UIView {
}
@end
实现文件:
#import "ShapeView.h"
#define kBlockWidth 40
#define kBlockHeight 40
@implementation ShapeView
- (id)initWithStartX:(int)startX startY:(int)startY colour:(NSString*)colour blocksX:(int)blocksX blocksY:(int)blocksY
{
CGRect frame = CGRectMake(startX, startY, kBlockWidth * blocksX, kBlockHeight * blocksY);
if ((self = [super initWithFrame:frame]) != nil)
{
for (int i = 0; i < blocksX; i++)
{
for (int j = 0; j < blocksY; j++)
{
UIImage* image = [UIImage imageNamed:[NSString stringWithFormat:@"Images/Blocks/%@block.jpg", colour]];
UIImageView* blockView = [[UIImageView alloc] initWithImage:image];
blockView.frame = CGRectMake(kBlockWidth * i,
kBlockHeight * j,
kBlockWidth,
kBlockHeight);
[self addSubview:blockView];
[blockView release];
}
}
}
return self;
}
@end
此实现只是添加的UIImageViews作为子视图。请注意,blockView
已分配和配置,然后作为self
的子视图添加。调用-addSubview:
会保留新的子视图,并将其实际添加到视图层次结构中。因此,blockView
立即发布。当整个ShapeView
对象被释放时,UIView的-dealloc
实现负责删除和释放子视图。
希望有帮助!
你有没有试过向它添加实际图像? – 2010-12-03 15:17:10
你可以使用代码块按钮吗?它使您的代码更易于阅读。你还在哪里尝试添加图像? – BOMEz 2010-12-03 15:27:34