Agregar UILabels y UIImageViews a UIScrollView mediante programación
scrollview swift (2)
Sé que esta pregunta está aquí mucho, pero todavía no puedo hacer que esto funcione. Probablemente no estoy iniciando la vista correctamente o algo así ... De todos modos, estoy tratando de agregar varias etiquetas e imágenes a un UIScrollView programmatically. Aquí está mi código para mi archivo .h:
#import <UIKit/UIKit.h>
@interface DOR_HelpViewController : UIViewController <UIScrollViewDelegate> {
IBOutlet UIScrollView *scrollView;
}
@property (nonatomic, retain) IBOutlet UIScrollView *scrollView;
@end
Y mi archivo .m:
#import "DOR_HelpViewController.h"
@implementation DOR_HelpViewController
@synthesize scrollView;
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
scrollView = [[UIScrollView alloc] init];
UILabel *pointsCouponLbl = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 20.0, 320.0, 15.0)];
pointsCouponLbl.font = [UIFont boldSystemFontOfSize:14.0];
pointsCouponLbl.textAlignment = UITextAlignmentCenter;
pointsCouponLbl.textColor = [UIColor blackColor];
pointsCouponLbl.backgroundColor = [UIColor clearColor];
pointsCouponLbl.text = @"Points Earned Using a Coupon";
[scrollView addSubview:pointsCouponLbl];
UIImageView *pointsCouponImg = [[UIImageView alloc] initWithFrame:CGRectMake(72, 45, 175, 100)];
pointsCouponImg.image = [UIImage imageNamed:@"couponpoints.png"];
[scrollView addSubview:pointsCouponImg];
UILabel *pointsCheckInLbl = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 165.0, 320.0, 15.0)];
pointsCheckInLbl.font = [UIFont boldSystemFontOfSize:14.0];
pointsCheckInLbl.textAlignment = UITextAlignmentCenter;
pointsCheckInLbl.textColor = [UIColor blackColor];
pointsCheckInLbl.backgroundColor = [UIColor clearColor];
pointsCheckInLbl.text = @"Points Earned For Check-In";
[scrollView addSubview:pointsCheckInLbl];
pointsCheckInLbl = nil;
UIImageView *pointsCheckInImg = [[UIImageView alloc] initWithFrame:CGRectMake(72, 190, 175, 100)];
pointsCheckInImg.image = [UIImage imageNamed:@"checkinpoints.png"];
[scrollView addSubview:pointsCheckInImg];
pointsCheckInImg = nil;
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
#pragma mark - View lifecycle
- (void)viewDidUnload
{
[super viewDidUnload];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
scrollView
está vinculado a mi objeto UIScrollView
en mi guión gráfico. Apreciaría mucho la información sobre lo que estoy haciendo mal, y por qué si no te importa. Gracias de antemano ~
Eliminar scrollView = [[UIScrollView alloc] init];
No es necesario (incluso contraproducente) cuando se trabaja con IB.
(en realidad solo era una idea en un comentario, ver más arriba. Pero trato de ganar reputación siempre que sea posible ;-))
-(void)addImagesToScrollView:(NSMutableArray*)jsonArray{
if (!jsonArray || jsonArray.count ==0) {
return;
}
int imageXPos=0;
int imageWidth=50;
int imageHeight=50;
for (int index=0; index<[jsonArray count]; index++)
{
NSMutableDictionary *dict=[jsonArray objectAtIndex:index];
NSString *thumbUrl=[JsonUtil getString:dict forKey:@"thumb"];
UIImageView *imageView = [[UIImageView alloc] init ];
[imageView setImageWithURL:[NSURL URLWithString:thumbUrl]
placeholderImage:[UIImage imageNamed:@"place_image"]];
imageView.contentMode = UIViewContentModeScaleToFill;
imageView.clipsToBounds = YES;
imageView.frame = CGRectMake(imageXPos,1, imageWidth, imageHeight);
[self.placeImageScrollView addSubview:imageView];
imageXPos = imageXPos + imageView.frame.size.width +2;//2 is padding
}
self.placeImageScrollView.contentSize = CGSizeMake(imageXPos, self.placeImageScrollView.frame.size.height);
}