2010-12-03 98 views
2

我一直堅持這一段時間,所以任何幫助將不勝感激。添加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); 
       } 
      } 
     } 
+1

你有沒有試過向它添加實際圖像? – 2010-12-03 15:17:10

+0

你可以使用代碼塊按鈕嗎?它使您的代碼更易於閱讀。你還在哪裏嘗試添加圖像? – BOMEz 2010-12-03 15:27:34

回答

4

(刪除舊文本)

其實,你在你的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實現負責刪除和釋放子視圖。

希望有幫助!