2013-07-09 13 views
11

Ćwiczę kod od początkującego, ponieważ jestem nowy i po prostu wpadłem tutaj na wiele zamieszania ... to jest to, co do tej pory miałemDodanie UIImage Zobacz jako subView do instancji UIView

UIView *catView = [[UIView alloc] init]; 
UIImage *image = [UIImage imageNamed:@"lolcat.png"]; 
UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 
[catView.view addSubview:imageView]; 

Nie rozumiem, co i dlaczego coś tu jest nie tak, czy ktoś może pomóc?

+0

Co widzisz? Domyślam się, że twoje 'catView' ma zerową ramkę, więc nie będzie wyświetlało się zbyt dobrze – Wain

+0

jest to część wyzwania witryny edukacyjnej o nazwie Treehouse, więc edytor jest w trybie online i nie pokazuje symulacji :( –

+0

Witryna po prostu mówi ci coś jest źle i pyta co możesz skopiować kod do projektu i spróbować go uruchomić ... – Wain

Odpowiedz

26
//You need to specify the frame of the view 
UIView *catView = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,400)]; 

UIImage *image = [UIImage imageNamed:@"lolcat.png"]; 
UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 

//specify the frame of the imageView in the superview , here it will fill the superview 
imageView.frame = catView.bounds; 

// add the imageview to the superview 
[catView addSubview:imageView]; 

//add the view to the main view 

[self.view addSubview:catView]; 
+0

' catView' nie ma właściwości 'view' . – rmaddy

+0

o tak, widziałem, ale zapomniałem go usunąć, gdy skomentowałem kod – soryngod

0

Interesująca i subtelna nuta. Jeśli widoki zostały już dodane w pliku .xib, widoki są "słabe" i trzeba zamienić na zmienną tymczasową. Również trochę prostej matematyki, aby uzyskać współrzędne odpowiadające tym, które ustawiłeś w swoim widoku:

@property (weak, nonatomic) IBOutlet UIImageView *imageView1; 
@property (weak, nonatomic) IBOutlet UIImageView *imageView2; 
CGRect tempFrame; 

tempFrame = self.imageView1.frame; 

CGRect tempFrame; // use bounds instead 

tempFrame = self.imageView2.frame; 

__strong UIImageView * tempView = self.imageView2; 
[self.imageView2 willMoveToSuperview: nil]; 
[self.imageView2 removeFromSuperview]; 
[self.imageView2 willMoveToSuperview: self.imageView1]; 
[self.imageViewSkate addSubview: self.imageViewBall]; 
self.imageView2.frame = CGRectMake(tempFrame.origin.x - self.imageView1.frame.origin.x, 
             tempFrame.origin.y - self.imageView1.frame.origin.y, 
             tempFrame.size.width, tempFrame.size.height); 
tempView = nil; 
Powiązane problemy