iOS 实战笔记2-(GeekBand)

1.使用UILabel显示静态文本

想要给用户显示静态文本,并且控制文本的字体和颜色。

@property(nonatomic,strong)UILabel *myLabel;

@synthesize myLabel;

-(void)viewDidLoad{

[super viewDidLoad];

self.view.backgroundColor = [UIColor whiteColor];

CGRect labelFrame = CGRectMake(0.0f,0.0f,100.0f,23.0f);

self.myLabel = [ [UILabel alloc]initWithFrame:labelFrame];

self.myLabel.text = @"hello world";

self.myLabel.font = [UIFont boldSystemFontOfSize:14.0f];

self.myLabel.numberOfLines = 3;//文本行数

self.myLabel.adjustsFontSizeToFitWidth = YES; //标签视图保持静态,并且标签里的字体能自动调整到适合标签的边界。

self.myLabel.center = self.view.center;

[self.view addSubview:self.myLabel];

}

使用UITextField接受用户文本输入(默认高度31像素)

@property( nonatomic,strong)UITextField *myTextField;

@synthesize myTextField;

-(void)viewDidLoad{

[super viewDidLoad];

self.view.backgroundColor = [UIColor whiteColor];

CGRect textFieldFrame = CGRectMake(0.0f,0.0f,200.0f,31.0f);

self.myTextField = [[UITextField alloc] initWithFrame:textFieldFrame];

self.myTextField.borderStyle = UITextBorderStyleRoundedRect;//文本视图边框

self.myTextField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;//文本视图纵向居中

self.myTextField.textAlignment = UITextAlignmentCenter;//文本水平对齐方式

self.myTextField.text = @"hello world";

self.myTextField.center = self.view.center;

[self.view addSubview:self.myTextField];

}

UITextFieldDelegate协议

textFieldShouldBeginEditing://BOOL 设置文本视图是否可编辑

textFieldDidBeginin: //当用户开始编辑这个文本视图时这个方法将会被调用。

textFieldShouldEndEditing: //这个方法返回一个BOOL值,它将告诉文本视图是否结束当前的编辑进程。假如返回NO,用户将不能终止文本的编辑。

textFieldDidEndEditing: 当文本视图的编辑进程终止时将会被调用。

textField:shouldChangeCharacterInRange:replacementString: 任何时候文本视图里的文本被修改都会调用这个方法。返回是一个布尔值,NO,文本视图里的文本的修改将不会被通知和发生,YES,说明允许修改文本。

textFieldShouldClear:每个文本视图都有一个clear按钮,通常是一个圆形X按钮。

textFieldShouldReturn:当用户在键盘上按下return 或 enter 键时将会调用这个方法,尝试隐藏键盘,你需要将这个文本视图注册为这个方法的第一个响应者。

@property(nonatomic,strong)UITextField *myTextField;

@property(nonatomic,strong)UILabel *labelCounter;

@synthesize myTextField;

@synthesize labelCounter;

-(void)calculateAndDisplayTextFieldLengthWithText:(NSString *)paramText{

NSString *characterOrCharacters = @"Characters";

if([paramText length] == 1){

characterOrCharacters = @"Character";

}

self.labelCounter.text = [NSString stringWithFormat:@"%lu %@",(unsigned long)[paramText length],characterOrCharacters];

}

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

BOOL result = YES;

if([textField isEqual:self.myTextField]){

NSString *wholeText = [textField.text stringByReplacingCharactersInRange:range withString:string];

[self calculateAndDisplayTextFieldLengthWithText:wholeText];

}

return result;

}

-(BOOL)textFieldShouldReturn:(UITextField *)textField{

[textField resignFirstResponder];

return YES;

}

-(void)viewDidLoad{

[super viewDidLoad];

self.view.backgroundColor = [UIColor whileColor];

CGRect textFieldFrame = CGRectMake(38.0f,30.0f,220.0f,31.0f);

self.myTextField = [[UITextField alloc]initWithFrame:textFieldFrame];

self.myTextField.delegate = self;

self.myTextField.borderStyle = UITextBorderStyleRounderRect;

self.myTextField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;

self.myTextField.text = @"hello world";

self.myTextField.placeholder = @"Enter text here … ";

self.view addSubview:self.myTextField];

CGRect labelCounterFrame = self.myTextField.frame;

labelCounterFrame.origin.y += textFieldFrame.size.height + 10;

self.labelCounter = [ [UILabel alloc]initWithFrame:labelCounterFrame];

[self.view addSubview:self.labelCounter];

[self calculateAndDisplayTextFieldLengthWithText];

[self calculateAndDisplayTextFieldLengthWithText:selfTextField.text];

}

文本视图有两个相对属性,它们分别是leftView和rightView。

UILabel *currencyLabel = [ [UILabel alloc]initWithFrame:CGRectZero];

currencyLabel.text = [ [ [NSNumberFormatter alloc]init]currencySymbol];

currencyLabel.font = self.myTextField.font;

[currencyLabel sizeToFit];

self.myTextField.leftView = currencyLabel;

self.myTextField.leftViewMode = UITextFieldViewModeAlways;

typedef enum{

UITextfieldViewModeNever,

UITextFieldViewModeWhileEditing,//假如已经声明一个值给它,当用户编辑这个文本视图时左视图将会显示。

UITextFieldViewModeUnlessEditing,//当用户没有在文本视图里编辑文本时左视图将会显示,但是一旦开始编辑,做视图将会消失。

UItextFieldViewModeAlways

}UITextFieldViewMode;

使用UITextView显示文本域

@property( nonatomic,strong)  UItextView  *myTextView;

@synthesize myTextView;

-(void)viewDidLoad{

[super viewDidLoad];

self.view.backgroundColor = [UIColor whileColor];

self.myTextView = [[UITextView alloc]initWithFrame:self.view.bounds];

self.myTextView.text = @"hello world";

self.myTextView.font = [UIFont systemFontOfSize:16.0f];

self.view addSubView:self.myTextView];

}

现假如你点击文本视图,虚拟键盘遮盖了文本视图的区域。怎么办呢?为了能弥补这个缺陷,我们需要监听一些待定通知:

UIKeyboardWillShowNotification //当键盘正准备显示子屏幕上时这个通知将会被发送给任何部件,比如文本视图。

UIKeyboardDidShowNotification //当键盘已经显示在屏幕上时将会发送这个通知。

UIKeyboardWIllHideNotification //当键盘即将被隐藏时将会发送通知

UIKeyboardDidHideNotification //当键盘完全隐藏时将会发送这个通知

所以我们的策略就是去发现键盘什么时候准备在屏幕上显示然后以何种方式调整视图。

-(void)handleKeyBoardDidShow:(NSNotification *)paramNotification{

NSValue *keyboardRectAsObject = [[paramNotification userInfo]objectForKey:UIKeyboardFrameEndUserInfoKey];/*get the frame of the keyboard*/

CGRect keyboardRect;

[keyboardRectAsObject getValue:&keyboardRect];/*place it in a CGRect*/

self.myTextView.contentInset = UIEdgeInsetsMake(0.0f,0.0f,  keyboarddRect.size.height,0.0f);

}

-(void)handleKeyboardWillHide:(NSNotification *)paramNotification{

self.myTextView.contentInset = UIEdgeInsetsZero;/*make the text view as the whole view again*/

}

-(void)viewWillAppear:(BOOL)paramAnimated{

[super viewWillAppear:paramAnimated];

[ [NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleKeyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];

[ [NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleKeyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];

self.view.backgroundColor = [UIColor whiteColor];

self.myTextView = [ [UITextView alloc] initWithFrame:self.view.bounds];

self.myTextView.text = @""hello world……;

self.myTextView.font = [UIFont systemFontOfSize:16.0f];

[self.view addSubview: self.myTextView];

}

-(void)viewWillDisappear:(BOOL)paramAnimated{

[super viewWillDisappear:paramAnimated];

[[NSNotificationCenter defaultCenter] removeObserver:self];

}

在这段代码中,在方法 viewWillAppear:开始建通键盘通知,在方法viewWillDisappear 结束监听。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容