Agregar UILabels y UIImageViews a UIScrollView mediante programación

Sé que esta pregunta está aquí mucho, pero parece que 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 mediante programación. 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 UIScrollView objeto en mi guión gráfico. Agradecería mucho la información sobre lo que estoy haciendo mal y por qué, si no le importa. Gracias de antemano ~

preguntado el 03 de mayo de 12 a las 16:05

Nunca trabajo con IB/guiones gráficos, pero ¿está seguro de que tiene que asignar/iniciar una vista definida en IB? es decir, es scrollView = [[UIScrollView alloc] init]; ¿necesario? -

No, no estoy seguro. Como debería haber intentado eso, porque esa era una de las cosas que estaba considerando. ¿Podrías poner eso como respuesta? Lo acabo de quitar y funcionó. -

2 Respuestas

Eliminar scrollView = [[UIScrollView alloc] init]; No es necesario (incluso contraproducente) cuando se trabaja con IB.

(en realidad, solo fue una idea en un comentario, ver arriba. Pero trato de ganar reputación siempre que sea posible ;-))

contestado el 03 de mayo de 12 a las 16:05

-(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);
}

Respondido 20 ago 16, 12:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.