簡體   English   中英

將UIImageView添加到UIView

[英]Add a UIImageView to a UIView

我已經堅持了一段時間,因此任何幫助將不勝感激。

我基本上已經做了一個名為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鋒利的代碼移植到目標中,上面的代碼是我的第一次嘗試,顯然不需要完成,但是您可以希望看到我正在嘗試的內容,對不起,我完全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#代碼中所做的與在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實現負責刪除和釋放子視圖。

希望有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM