Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 将UIImageView添加到UIView_Iphone_Objective C_Ios_Uiview_Uiimageview - Fatal编程技术网

Iphone 将UIImageView添加到UIView

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

我在这件事上已经有一段时间了,所以任何帮助都将不胜感激

我基本上创建了一个名为shape的类,它是一个
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
将立即释放。当le
ShapeView
对象被解除分配,UIView的
-dealoc
实现负责删除和释放子视图


希望这有帮助!

您是否尝试过向其添加实际图像?您可以使用代码块按钮吗?它使您的代码更容易为每个人阅读。您尝试在哪里添加图像?最终,我想用多个UIImageView填充UIView,我开始在monodevelop中编写它,但现在由于被要求移植,我被卡住了如果有用的话,我可以向您展示旧的c sharp代码。我不打算使用Interface Builder,所以我猜我可以删除IBOutlet?嘿,非常感谢,代码实际上看起来非常类似于我的c代码,所以我很容易阅读:)但是我确实在下面的一行中遇到了以下错误“if((self=[super initWithFrame:frame]!=nil)//在@interface中没有为'ShapeView'声明超类是的,对不起,我省略了
#import
语句。现在它们在上面的代码中。我还修复了一个复制粘贴错误(
kBlockWidth
kBlockHeight
拼写错误).它现在为我编译。是的,它也为我编译:)你是一个绝对的英雄!非常感谢!