如何使用Frame Size从ViewController调用自定义UIView

时间:2016-01-21 07:29:47

标签: ios objective-c uiview call

我想显示CustomUIView来自我的ViewController。如何使用框架调用?我在框架中感到困惑,因为我是新手。 我的主题是,我想在y值150中的LoginViewKarnataka中显示usernameLabelViewController。 这是我的代码

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]];
}
}

2 个答案:

答案 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调试。

感谢。