当前位置:  编程技术>移动开发
本页文章导读:
    ▪UITextField颤动动画        UITextField抖动动画最近做项目,需求中要求用户名或密码输错时,输入框要抖动(类似Mac登录密码错误的抖动效果)。现将代码分享出来: @interface UITextField (YHShakeUITextField) - (void) shake; @end.........
    ▪ @property 的施用        @property 的使用Objective-C语言关键词,与@synthesize配对使用。 功能:让编译器自动编写一个与数据成员同名的方法声明来省去读写方法的声明。 说白了,就是java中的getter setter方法。 声明prope.........
    ▪ 关于edittext排版有关问题续       关于edittext排版问题续继上次说用权重之后,发现了新的问题就是当横屏的时候textview和edittext的差距会隔的较远,这样就不好看了。于是又换了一种新的想法,把textview和edittext的父类换成Rela.........

[1]UITextField颤动动画
    来源: 互联网  发布时间: 2014-02-18
UITextField抖动动画

最近做项目,需求中要求用户名或密码输错时,输入框要抖动(类似Mac登录密码错误的抖动效果)。现将代码分享出来:


@interface UITextField (YHShakeUITextField)

- (void) shake;

@end



#import "YH-TextField.h"

#import <QuartzCore/QuartzCore.h>


@implementation  UITextField (YHShakeUITextField)


//self.superView

- (void) shake {

CAKeyframeAnimation *keyAn = [CAKeyframeAnimation animationWithKeyPath:@"position"];

[keyAn setDuration:0.5f];

NSArray *array = [[NSArray alloc] initWithObjects:

  [NSValue valueWithCGPoint:CGPointMake(self.center.x, self.center.y)],

  [NSValue valueWithCGPoint:CGPointMake(self.center.x-5, self.center.y)],

  [NSValue valueWithCGPoint:CGPointMake(self.center.x+5, self.center.y)],

  [NSValue valueWithCGPoint:CGPointMake(self.center.x, self.center.y)],

  [NSValue valueWithCGPoint:CGPointMake(self.center.x-5, self.center.y)],

  [NSValue valueWithCGPoint:CGPointMake(self.center.x+5, self.center.y)],

  [NSValue valueWithCGPoint:CGPointMake(self.center.x, self.center.y)],

  [NSValue valueWithCGPoint:CGPointMake(self.center.x-5, self.center.y)],

  [NSValue valueWithCGPoint:CGPointMake(self.center.x+5, self.center.y)],

  [NSValue valueWithCGPoint:CGPointMake(self.center.x, self.center.y)],

  nil];

[keyAn setValues:array];

[array release];

NSArray *times = [[NSArray alloc] initWithObjects:

  [NSNumber numberWithFloat:0.1f],

  [NSNumber numberWithFloat:0.2f],

  [NSNumber numberWithFloat:0.3f],

  [NSNumber numberWithFloat:0.4f],

  [NSNumber numberWithFloat:0.5f],

  [NSNumber numberWithFloat:0.6f],

  [NSNumber numberWithFloat:0.7f],

  [NSNumber numberWithFloat:0.8f],

  [NSNumber numberWithFloat:0.9f],

  [NSNumber numberWithFloat:1.0f],

  nil];

[keyAn setKeyTimes:times];

[times release];

[self.layer addAnimation:keyAn forKey:@"TextAnim"];

}

@end



在登录的类里调用如下:

-(void)isloginbuttonClick

{

    if ([userTextField.text length] == 0)

    {

        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"watch out" 

                                                            message:@"please input user" 

                                                           delegate:nil 

                                                  cancelButtonTitle:@"OK"

                                                  otherButtonTitles:nil,nil];

        [alertView show];

        [alertView release];

        [userTextField shake];

    }

    else if ([passwordTextField.text length] == 0)

    {

        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"watch out"

                                                            message:@"please input password"

                                                           delegate:nil

                                                  cancelButtonTitle:@"OK"

                                                  otherButtonTitles:nil, nil];

        [alertView show];

        [alertView release];

        [passwordTextField shake];

    }

    else 

    {

        SecondViewController *secondViewController = [[SecondViewController alloc] init];

        [self.navigationController pushViewController:secondViewController animated:YES]; 

    }

}



    
[2] @property 的施用
    来源: 互联网  发布时间: 2014-02-18
@property 的使用

Objective-C语言关键词,与@synthesize配对使用。

功能:让编译器自动编写一个与数据成员同名的方法声明来省去读写方法的声明。

说白了,就是java中的getter setter方法。

声明property的语法为:

  @property (参数1,参数2) 类型 名字;
  如:@property(nonatomic,retain) UIWindow *window;
  其中参数主要分为三类:
  读写属性: (readwrite/readonly)
  setter语意:(assign/retain/copy)
  原子性: (atomicity/nonatomic)
  各参数意义如下:
  readwrite
  产生setter\getter方法
  readonly
  只产生简单的getter,没有setter。
  assign
  默认类型,setter方法直接赋值,而不进行retain操作
  retain
  setter方法对参数进行release旧值,再retain新值。
  copy
  setter方法进行Copy操作,与retain一样
  nonatomic
  禁止多线程,变量保护,提高性能。

assign  通常用于基本类型,如int,bool,char等。

copy 通常用于NSString,NSNumber,NSArray等不变的类型。

retain 一般的NSObject 都用这个。

 下面解释一下NSString类型的变量的setter方法为什么要用copy.直接上代码:

1
2
3
4
5
6
7
8
9
10
@interface Person
@property (nonatomic, retain) NSString *name;
@end
 
Person *p = [[Person alloc] init];
NSMutableString *name = [[NSMutableString alloc] initWithString:@"hello"];
p.name = name;
 
[name appendString:@" world"];
NSLog(@"%@", p.name);  // 此时p.name已变成hello world, 这不是我们想要的。
如果
?
1
2
3
4
5
6
7
8
9
10
@interface Person
@property (nonatomic, copy) NSString *name;
@end
 
Person *p = [[Person alloc] init];
NSMutableString *name = [[NSMutableString alloc] initWithString:@"hello"];
p.name = name;
 
[name appendString:@" world"];
NSLog(@"%@", p.name);  // 此时p.name仍为hello, 这是正确的。





NSString类型变量的值是不会发生变化的,但变量的内存地址是会发生变化的。copy的用法是复制内容,并且新分配一块内存地址。而retain则是将输入参数的内存地址复制一份,赋给成员变量。所以copy和retain的区别在于,如果传入的参数是NSMutableString类型的话,这个参数一旦发生变化,成员变量的内容也会发生变化;而用copy,则不会发生这种情况(因为两者的内存地址完全不同)。如果传入的参数是NSString,则用copy和retain的效果完全一样,没什么分别。所以NSString、NSArray等不可变的类型建议用copy。

以上代码来自cocoachina

http://www.cocoachina.com/bbs/read.php?tid=107184&toread=1






    
[3] 关于edittext排版有关问题续
    来源: 互联网  发布时间: 2014-02-18
关于edittext排版问题续
继上次说用权重之后,发现了新的问题就是当横屏的时候textview和edittext的差距会隔的较远,这样就不好看了。于是又换了一种新的想法,把textview和edittext的父类换成RelativeLayout,这样就不用权重,在textview的width为wrap,edittext的width为fill,统一设置edittext距离左边的距离。

    
最新技术文章:
java开源软件 iis7站长之家
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,