Jeff Bootsholz
Jeff Bootsholz

Reputation: 3068

ios : how to add uiLabel on top of the background image?

I am trying to add the uiLabel on top of the uiImageVIew which is the background image. When it comes to adding the uiLabel on top of the uiImageView, the uilabel cannot be aded when testing and running. Would you please tell me the alternatives or precautions if doing so ?

The below is my code :

@implementation CoverViewController

- (void)viewDidLoad {
    [super viewDidLoad];

   _container = [[UIView alloc] initWithFrame:[self.view bounds]];

    [self setTapDemo :[UIImage imageNamed:@"cover_1_d.png"] ] ;
}



- (void) setTapDemo: (UIImage *) cover {

    _image = [UIImage imageNamed:@"shaded_region.png"];
    _imageShaded = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
    [_imageShaded setImage:_image];
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
    [imageView setImage: cover ];
    _imageShaded.userInteractionEnabled = YES;
    UITapGestureRecognizer *myGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(touchesBegan:)];
    myGesture.numberOfTapsRequired = 1;
    myGesture.delegate=self;
    [_imageShaded addGestureRecognizer:myGesture];
    [_imageShaded setContentMode:UIViewContentModeScaleAspectFill];

    NSString * text = @"Quad name:";

    CGSize labelSize = CGSizeMake(60, CGFLOAT_MAX);
    UILabel *fromLabel = [[UILabel alloc]initWithFrame:CGRectMake(91, 15, labelSize.width, labelSize.height)];
    fromLabel.text = text;
    fromLabel.numberOfLines = 1;
    fromLabel.lineBreakMode = NSLineBreakByWordWrapping;
    fromLabel.baselineAdjustment = UIBaselineAdjustmentAlignBaselines; // or UIBaselineAdjustmentAlignCenters, or UIBaselineAdjustmentNone
    fromLabel.adjustsFontSizeToFitWidth = YES;
    fromLabel.minimumScaleFactor = 10.0f/12.0f;
    fromLabel.clipsToBounds = YES;
    fromLabel.backgroundColor = [UIColor clearColor];
    fromLabel.textAlignment = NSTextAlignmentLeft;
    [_imageShaded addSubview:fromLabel];
    [imageView addSubview:fromLabel];


    [_container addSubview:_imageShaded];
    [_container addSubview:imageView];
    [_container addSubview:fromLabel];

    [self.view addSubview:_container];
    [self.view sendSubviewToBack:_container];


}

Upvotes: 0

Views: 514

Answers (2)

srinivas n
srinivas n

Reputation: 640

Check This

- (void) setTapDemo: (UIImage *) cover {

    _image = [UIImage imageNamed:@"images.jpg"];
    _imageShaded = [[UIImageView alloc] initWithFrame:CGRectMake(0, 60, self.view.frame.size.width, self.view.frame.size.height)];
    [_imageShaded setImage:_image];
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 60, self.view.frame.size.width, self.view.frame.size.height)];
    [imageView setImage: cover ];
    _imageShaded.userInteractionEnabled = YES;
    UITapGestureRecognizer *myGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(touchesBegan:)];
    myGesture.numberOfTapsRequired = 1;
    myGesture.delegate=self;
    [_imageShaded addGestureRecognizer:myGesture];
    [_imageShaded setContentMode:UIViewContentModeScaleAspectFill];

    NSString * text = @"Quad name:";
   // CGSize labelSize = CGSizeMake(60, CGFLOAT_MAX);
    UILabel *fromLabel = [[UILabel alloc]initWithFrame:CGRectMake(91, 15, 300, 40)];
    fromLabel.text = text;
    fromLabel.textColor = [UIColor greenColor];
    fromLabel.numberOfLines = 1;
    fromLabel.lineBreakMode = NSLineBreakByWordWrapping;
    fromLabel.baselineAdjustment = UIBaselineAdjustmentAlignBaselines; // or UIBaselineAdjustmentAlignCenters, or UIBaselineAdjustmentNone
    fromLabel.adjustsFontSizeToFitWidth = YES;
    fromLabel.minimumScaleFactor = 10.0f/12.0f;
    fromLabel.clipsToBounds = YES;
    fromLabel.backgroundColor = [UIColor clearColor];
    fromLabel.textAlignment = NSTextAlignmentLeft;



    [_container addSubview:_imageShaded];
    [_container addSubview:imageView];


    [self.view addSubview:_container];
    [self.view sendSubviewToBack:_container];
    [imageView addSubview:fromLabel];


}

Upvotes: 1

Shoaib
Shoaib

Reputation: 2294

You are adding your UILabel more than once on different views. you should add it on a single view at a time;

//[_imageShaded addSubview:fromLabel];   // 1
//[imageView addSubview:fromLabel];      // 2


[_container addSubview:_imageShaded];
[_container addSubview:imageView];
//[_container addSubview:fromLabel];     //3

Upvotes: 0

Related Questions