Iphone 将UIImageView添加到UIView
我在这件事上已经有一段时间了,所以任何帮助都将不胜感激 我基本上创建了一个名为shape的类,它是一个Iphone 将UIImageView添加到UIView,iphone,objective-c,ios,uiview,uiimageview,Iphone,Objective C,Ios,Uiview,Uiimageview,我在这件事上已经有一段时间了,所以任何帮助都将不胜感激 我基本上创建了一个名为shape的类,它是一个UIView,我想在UIView中添加一个UIImageView 这是我的.h文件: @interface Shape : UIView { int blockWidth; int blockHeight; NSString *colour; IBOutlet UIImageView *blockView; } @property (nonatomic, retain) IBOu
UIView
,我想在UIView
中添加一个UIImageView
这是我的.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 sharp代码移植到objective中,上面的代码是我第一次尝试,显然不需要完成,但是你可以希望看到我想要实现什么,抱歉,但是我对objective 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);
}
}
}
公共类形状:UIView
{
公共UIImageView区块视图;
私有int块宽度=40;
私家车高度=40;
公共形状(int startX、int startY、字符串颜色、int blocksX、int blocksY)
{
控制台写入线(“颜色:“+color+”块:“+blocksX+”+blocksY);
此.Frame=新矩形F(startX、startY、blockWidth*blocksX、blockHeight*blocksY);
this.UserInteractionEnabled=true;
对于(int i=0;i(删除旧文本)
事实上,在Objective-C中,您在C代码中所做的与在Objective-C中没有什么不同(此代码未经测试!):
在头文件中:
#import <UIKit/UIKit.h>
@interface ShapeView : UIView {
}
@end
#导入
@接口ShapeView:UIView{
}
@结束
实施文件:
#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
#导入“ShapeView.h”
#定义kBlockWidth 40
#定义kBlockHeight 40
@实现ShapeView
-(id)initWithStartX:(int)startX startY:(int)startY color:(NSString*)色块sx:(int)blocksX blocksY:(int)blocksY
{
CGRect frame=CGRectMake(startX,startY,kBlockWidth*blocksX,kBlockHeight*blocksY);
if((self=[super initWithFrame:frame])!=nil)
{
对于(int i=0;i
此实现只是将UIImageView添加为子视图。请注意,blockView
已分配和配置,然后添加为self
的子视图。调用-addSubview:
将保留新的子视图,并实际将其添加到视图层次结构中。因此,blockView
将立即释放。当leShapeView
对象被解除分配,UIView的-dealoc
实现负责删除和释放子视图
希望这有帮助!您是否尝试过向其添加实际图像?您可以使用代码块按钮吗?它使您的代码更容易为每个人阅读。您尝试在哪里添加图像?最终,我想用多个UIImageView填充UIView,我开始在monodevelop中编写它,但现在由于被要求移植,我被卡住了如果有用的话,我可以向您展示旧的c sharp代码。我不打算使用Interface Builder,所以我猜我可以删除IBOutlet?嘿,非常感谢,代码实际上看起来非常类似于我的c代码,所以我很容易阅读:)但是我确实在下面的一行中遇到了以下错误“if((self=[super initWithFrame:frame]!=nil)//在@interface中没有为'ShapeView'声明超类是的,对不起,我省略了#import
语句。现在它们在上面的代码中。我还修复了一个复制粘贴错误(kBlockWidth
和kBlockHeight
拼写错误).它现在为我编译。是的,它也为我编译:)你是一个绝对的英雄!非常感谢!