我们知道 xCode 是完全兼容 OC, C, swift 的。但是C语言在里面应该怎么写呢?
interface 是OC的接口部分;
implement 是OC的实现部分;
所以 C语言 不建议写在里面。
应该 特别的找一个类(可以是View 可以是model 可以是controller 总之都可以),在OC接口和实现的外面 写入C的实现即可。如:
// // BaseVC.h // embedC // // Created by lc-macbook pro on 2017/6/12. // Copyright © 2017年 mac. All rights reserved. // #import <UIKit/UIKit.h> UILabel *createLbl(UIFont *font,NSString *text); UIButton *createButton(NSString *title, UIFont *font, UIColor *titleColor); UITextField *createField(NSString *placeHold,UIFont *font); @interface BaseVC : UIViewController @end
//
// BaseVC.m
// embedC
//
// Created by lc-macbook pro on 2017/6/12.
// Copyright © 2017年 mac. All rights reserved.
//
#import "BaseVC.h"
UILabel *createLbl(UIFont *font,NSString *text)
{
UILabel *lbl=[UILabel new];
lbl.backgroundColor=[UIColor clearColor];
lbl.font= font;
lbl.text = text;
lbl.textAlignment=NSTextAlignmentLeft;
return lbl;
}
UIButton *createButton(NSString *title, UIFont *font, UIColor *titleColor)
{
UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];
[btn setTitleColor:titleColor forState:UIControlStateNormal];
[btn setTitleColor:[UIColor blackColor] forState:UIControlStateSelected];
[btn setTitle:title forState:UIControlStateNormal];
[btn setTintColor:[UIColor clearColor]];
btn.titleLabel.font = font;
return btn;
}
UITextField *createField(NSString *placeHold,UIFont *font)
{
UITextField *textfield=[[UITextField alloc]init];
textfield.font=font;
textfield.placeholder=placeHold;
textfield.leftViewMode=UITextFieldViewModeAlways;
textfield.rightViewMode = UITextFieldViewModeAlways;
textfield.clearButtonMode=UITextFieldViewModeWhileEditing;
return textfield;
}
@interface BaseVC ()
@end
@implementation BaseVC
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
引入这个类的头文件, 就可以在任何地方, 调用自己写的接口啦, 是不是很简单?
//
// ViewController.m
// embedC
//
// Created by lc-macbook pro on 2017/6/12.
// Copyright © 2017年 mac. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UILabel *lbl = createLbl([UIFont systemFontOfSize:20], @"用 C语言 封装创建Label的API");
lbl.frame = CGRectMake(100, 100, 300, 40);
[self.view addSubview:lbl];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
看下效果:github 地址:embedC
