简体   繁体   中英

UIView won't recognize a subview

I need to create a UIView with a UILabel subview programmatically because it works better than IB for animations. I cannot get the UIView to recognize the UILabel though. Here is my code from viewDidLoad:

UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(764, 94, 200, 100)];
[label setText:@"Hello"];
[label setTextColor:[UIColor redColor]];
[label setBackgroundColor:[UIColor clearColor]];

UIView *hintView = [[UIView alloc]initWithFrame:CGRectMake(764, 94, 240, 198)];
[hintView setBackgroundColor:[UIColor colorWithRed:(34/255.f) green:(59/255.f) blue:(27/255.f) alpha:(255/255.f)]];

[hintView addSubview:label];
[self.view addSubview:hintView];

NSLog(@"subview %@", hintView.subviews);

Thanks

UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(764, 94, 200, 100)];

你正在设置宽框架试试这个

 UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 200, 100)];

Change yourLable.frame.origin.x between (0) to (320 - withOfYourLabel)

Above code is same for your custom UIView (set X )

And if you want to get subViews of your custom view then follow

for(UIView *subView in hintViewsubviews)
{
     /// here you got all subview of hintView

     if([subView isKindOfClass:[UILabel class]])
     {
            // here you can also check that subView is UILabel or not ?
     }
}

You are taking same frame size for both UIView and Label.bcz of that you are not getting proper output.See the changes which i have done to you code and try this

UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(hintView.frame.origin.x+15, hintView.frame.origin.y+50, hintView.frame.size.width-60, hintView.frame.size.height-100)];
[label setText:@"Hello"];
[label setTextColor:[UIColor redColor]];
[label setBackgroundColor:[UIColor clearColor]];

UIView *hintView = [[UIView alloc]initWithFrame:CGRectMake(764, 94, 240, 198)];
[hintView setBackgroundColor:[UIColor colorWithRed:(34/255.f) green:(59/255.f)    blue:(27/255.f) alpha:(255/255.f)]];

[hintView addSubview:label];
[self.view addSubview:hintView];

NSLog(@"subview %@", hintView.subviews);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM