我想显示CustomUIView
来自我的ViewController
。如何使用框架调用?我在框架中感到困惑,因为我是新手。
我的主题是,我想在y值150中的LoginViewKarnataka
中显示usernameLabel
和ViewController
。
这是我的代码
ViewController.m
LoginViewKarnataka *loginView = [[LoginViewKarnataka alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 150)];
[self.view addSubview:loginView];
LoginViewKarnataka(CustomUIView)
-(instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
NSLog(@"frame==>>%f",frame);
if (self)
{
UILabel *usernameLabel = [[UILabel alloc]initWithFrame:CGRectMake(20, 20, 100, 20)];
[usernameLabel setText:@"username"];
[usernameLabel setTextColor:[UIColor blackColor]];
}
}
答案 0 :(得分:1)
将viewController代码更改为
LoginViewKarnataka *loginView = [[LoginViewKarnataka alloc]initWithFrame:CGRectMake(0, 50, self.view.frame.size.width, 150)];
[self.view addSubview:loginView];
在您的LoginViewKarnataka视图中
-(instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
[self setBackgroundColor:[UIColor redColor]];
UILabel *usernameLabel = [[UILabel alloc]initWithFrame:CGRectMake(20, 20, 100, 20)];
[usernameLabel setText:@"username"];
[usernameLabel setTextColor:[UIColor blackColor]];
[self addSubview:label];
}
return self;
}
在上面的代码中,您要在x:20,y:20的位置添加标签。 要打印任何视图的帧,请使用以下代码。
NSLog(@"frame : %@",NSStringFromCGRect(self.view.frame));
打印任何视图的大小
NSLog(@"frame : %@",NSStringFromCGSize(self.view.frame.size));
答案 1 :(得分:1)
你的代码很好。缺少的是将usernameLabel作为子视图添加到自定义视图中。
[self addSubview:usernameLabel];
P.S。如果需要记录任何帧值,则只需记录视图即可。帧值打印在视图的描述中。如果您创建了任何复杂的UI,也可以使用DCIntrospect进行UI调试。
感谢。