为啥 view2 没有出现在这段代码中? (将 UIView 2 合并到 UIView 1 中)
Posted
技术标签:
【中文标题】为啥 view2 没有出现在这段代码中? (将 UIView 2 合并到 UIView 1 中)【英文标题】:why doesn't view2 appear in this code? (incorporating UIView 2 within UIView 1)为什么 view2 没有出现在这段代码中? (将 UIView 2 合并到 UIView 1 中) 【发布时间】:2011-03-24 11:57:07 【问题描述】:为什么 view2 没有出现在这段代码中?在结果中,我看到显示的本地 View1 标签,在顶部带有红色边框,在整个绿色边框内,但是我什么也没看到 view2?即带有文本“View2 Label Text”的标签,不会出现。
test11ViewController.m
@implementation test11ViewController
- (void)viewDidLoad
[super viewDidLoad];
View1 *view1 = [[[View1 alloc] initWithFrame:CGRectMake(0.0, 0.0, 400, 100) ] autorelease];
view1.layer.borderColor = [UIColor redColor].CGColor;
view1.layer.borderWidth = 1;
[self.view addSubview:view1];
@end
View1.m
@implementation View1
- (id)initWithFrame:(CGRect)frame
self = [super initWithFrame:frame];
if (self)
// Local Label
CGFloat width = self.frame.size.width;
UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, width, 30)] autorelease];
label.text = @"View1 Label Text";
label.layer.borderColor = [UIColor greenColor].CGColor;
label.layer.borderWidth = 1.0;
[self addSubview:label];
// External - Label2
View2 *view2 = [[[View2 alloc] initWithFrame:CGRectMake(0.0, 30, width, 30)] autorelease];
[super addSubview:view2];
return self;
@end
View2.m
@implementation View2
- (id)initWithFrame:(CGRect)frame
self = [super initWithFrame:frame];
if (self)
CGFloat width = self.frame.size.width;
UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, width, 30)] autorelease];
label.text = @"View2 Label Text"; // Does NOT appear in output
label.layer.borderColor = [UIColor blueColor].CGColor;
label.layer.borderWidth = 1.0;
return self;
@end
【问题讨论】:
如您所见,我发布了第一个答案,我很快意识到这是错误的,因此我删除了该答案。留下了更新的答案! 【参考方案1】:view2
实际上并没有将标签添加到自身。你错过了这个:
[self addSubview:label];
换句话说,试试:
@implementation View2
- (id)initWithFrame:(CGRect)frame
self = [super initWithFrame:frame];
if (self)
CGFloat width = self.frame.size.width;
UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, width, 30)] autorelease];
label.text = @"View2 Label Text"; // Does NOT appear in output
label.layer.borderColor = [UIColor blueColor].CGColor;
label.layer.borderWidth = 1.0;
[self addSubview:label]; // NEW LINE HERE
return self;
@end
【讨论】:
arrr - 明白了 - 谢谢 oculus - 你认为我能看到这个吗:)【参考方案2】:在您的测试视图控制器行之后...
[self.view addSubview:view1];
...添加...
[self.view sendSubviewToBack:view1];
view2 现在显示了吗?提醒一下,将两个视图的 alpha 设置为 0.5,以确保一个不会遮挡另一个。
【讨论】:
以上是关于为啥 view2 没有出现在这段代码中? (将 UIView 2 合并到 UIView 1 中)的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在这段代码中得到“未知类型名称 NSManagedObjectContext”?
React Native datetimepicker 问题。在这段代码中为啥 Platform.OS==='ios'?true:false?