iphone开发中的一些小技巧
2011-05-23 10:02
429 查看
在iPhone开发过程中,一些小技巧对开发工作有很大的帮助作用,所以以下内容收集了一些开发过程中的小技巧。
1、如果在程序中想对某张图片进行处理的话(得到某张图片的一部分)可一用以下代码:
UIImage
*image = [UIImage
imageNamed
:filename];
CGImageRef imageRef = image.CGImage
;
CGRect rect = CGRectMake
(origin.x
, origin.y
,size.width
, size.height
);
CGImageRef imageRefRect = CGImageCreateWithImageInRect
(imageRef,
rect);
UIImage *imageRect = [[UIImage
alloc
] initWithCGImage
:imageRefRect];
2、判断设备是iphone还是iphone4的代码:
#define isRetina ([UIScreen
instancesRespondToSelector:@selector(currentMode)] ?
CGSizeEqualToSize(CGSizeMake(640
, 960
), [[UIScreen mainScreen]
currentMode].size) : NO)
3、判断邮箱输入的是否正确:
-
(BOOL
) validateEmail:
(NSString
*) candidate {
NSString
*emailRegex =
@"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+//.[A-Za-z]{2,4}";
NSPredicate
*emailTest =
[NSPredicate
predicateWithFormat
:@"SELF MATCHES %@"
,
emailRegex];
return
[emailTest evaluateWithObject
:candidate];
}
4、如何把当前的视图作为照片保存到相册中去:
#import
<QuartzCore/QuartzCore.h>
UIGraphicsBeginImageContext(currentView.bounds
.size
);
//currentView
当前的
view
[currentView.
layer
renderInContext:
UIGraphicsGetCurrentContext()];
UIImage *viewImage =
UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage, nil
, nil
, nil
);
5、本地通知(类似于push通知)按home键到后台
十秒后触发:
UILocalNotification *notification=[[UILocalNotification
alloc
] init
];
if
(notification!=nil
) {
NSLog
(
@">> support
local notification");
NSDate
*now=[NSDate
new
];
notification.fireDate
=[now
addTimeInterval
:10
];
notification.timeZone
=[NSTimeZone
defaultTimeZone
];
notification.alertBody
=@"
该去吃晚饭了!
"
;
[[
UIApplication
sharedApplication].
scheduleLocalNotification:notification];
}
6、捕获iphone通话事件:
CTCallCenter *center = [[CTCallCenter alloc
] init
];
center.callEventHandler = ^(CTCall *call
)
{
NSLog
(@"call:%@"
, call
.callState);
}
7、
iOS
4
引入了多任务支持,所以用户按下 “Home”
键以后程序可能并没有退出而是转入了后台运行。如果您想让应用直接退出,最简单的方法是:在 info
-plist
里面找到 Application does not run in
background
一项,勾选即可。
8、使UIimageView的图像旋转:
float
rotateAngle =
M_PI
;
CGAffineTransform transform =CGAffineTransformMakeRotation
(rotateAngle);
imageView.transform = transform;
9、设置旋转的原点:
#import
<QuartzCore/QuartzCore.h>
UIImageView *imageView = [[UIImageView
alloc
] initWithImage
:[UIImage
imageNamed
:@"bg.png"
]];
imageView.layer.anchorPoint = CGPointMake
(0.5
, 1.0
);
10、实现自定义的状态栏(遮盖状态栏):
CGRect frame = {{0
,
0
}, {320
, 20
}};
UIWindow* wd = [[UIWindow
alloc
] initWithFrame
:frame];
[wd
setBackgroundColor:[
UIColor
clearColor]];
[wd
setWindowLevel
:
UIWindowLevelStatusBar];
frame = CGRectMake
(100
, 0
,
30
, 20
);
UIImageView* img = [[UIImageView
alloc
] initWithFrame
:frame];
[img
setContentMode:
UIViewContentModeCenter];
[img
setImage:[
UIImage
imageNamed:
@"00_0103.png"
]];
[wd
addSubview
:img];
[wd
makeKeyAndVisible];
[
UIView
beginAnimations:
nil
context:
nil
];
[
UIView
setAnimationDuration:
2
];
frame.origin.x += 150
;
[img
setFrame
:frame];
[
UIView
commitAnimations];
11、在程序中实现电话的拨打:
//
添加电话图标按钮
UIButton *btnPhone =
[[
UIButton
buttonWithType:
UIButtonTypeCustom]
retain];
btnPhone.frame = CGRectMake
(280
,10
,30
,30
);
UIImage *image = [UIImage
imageNamed
:@"phone.png"
];
[btnPhone
setBackgroundImage:image
forState:
UIControlStateNormal];
//
点击拨号按钮直接拨号
[btnPhone
addTarget:
self
action:
@selector
(callAction:event:)
forControlEvents:
UIControlEventTouchUpInside];
[cell.
contentView
addSubview
:btnPhone];
//cell是一个
UITableViewCell
//
定义点击拨号按钮时的操作
-
(void
)callAction:(id
)sender event:(id
)event{
NSSet
*touches = [event
allTouches
];
UITouch
*touch = [touches
anyObject
];
CGPoint
currentTouchPosition =
[touch locationInView
:self
.listTable];
NSIndexPath
*indexPath =
[self
.listTable indexPathForRowAtPoint
:
currentTouchPosition];
if
(indexPath == nil
) {
return;
}
NSInteger
section = [indexPath
section
];
NSUInteger
row = [indexPath
row
];
NSDictionary
*rowData = [datas
objectAtIndex
:row];
NSString
*num = [[NSString
alloc
] initWithFormat
:@"tel://%@"
,number]; //number
为号码字符串
[[
UIApplication
sharedApplication]
openURL:[
NSURL
URLWithString:num]];
//
拨号
}
12、更改iphone的键盘颜色:
1.
只有这
2种数字键盘才有效果。
UIKeyboardTypeNumberPad,
UIKeyboardTypePhonePad
2.
keyboardAppearance
=
UIKeyboardAppearanceAlert
-
(void
)textViewDidBeginEditing:(UITextView
*)textView{
NSArray
*ws = [[
UIApplication
sharedApplication]
windows];
for
(UIView
*w in
ws){
NSArray
*vs = [w subviews
];
for
(UIView
*v in
vs)
{
if
([[
NSString
stringWithUTF8String:
object_getClassName(v)]
isEqualToString:
@"UIKeyboard"
])
{
v.
backgroundColor = [
UIColor redColor
];
}
}
}
13、设置时区
NSTimeZone
*defaultTimeZone = [NSTimeZone
defaultTimeZone
];
NSTimeZone *tzGMT = [
NSTimeZone
timeZoneWithName
:
@"GMT"
];
[
NSTimeZone
setDefaultTimeZone:tzGMT];
上面两个时区任意用一个。
14、Ipad隐藏键盘的同时触发方法。
[[
NSNotificationCenter
defaultCenter]
addObserver:
self
selector
:@selector
(keyboardWillHide:)
name
:
UIKeyboardWillHideNotification
object
:nil
];
-
(IBAction
)keyboardWillHide:(NSNotification
*)note
14、在一个程序中打开另一个程序的方法。
http://www.cocoachina.com/iphonedev/sdk/2010/0322/768.html
15、计算字符串的字数
-(int
)calculateTextNumber:(NSString
*)text
{
float
number = 0.0
;
int
index = 0
;
for
(index; index
< [text length
];
index++)
{
NSString
*protoText = [text
substringToIndex
:[text
length
] - index];
NSString
*toChangetext = [text
substringToIndex
:[text
length
] -1
-index];
NSString
*charater;
if
([toChangetext length
]==0
)
{
charater = protoText;
}
else
{
NSRange
range = [text
rangeOfString
:toChangetext];
charater = [protoText
stringByReplacingCharactersInRange:range
withString:
@""
];
}
NSLog
(charater);
if
([charater
lengthOfBytesUsingEncoding:
NSUTF8StringEncoding] ==
3
)
{
number++;
}
else
{
number = number+0.5
;
}
}
return
ceil
(number);
}
摘自:http://blog.sina.com.cn/s/blog_6a2cbc930100m7eh.html
1、如果在程序中想对某张图片进行处理的话(得到某张图片的一部分)可一用以下代码:
UIImage
*image = [UIImage
imageNamed
:filename];
CGImageRef imageRef = image.CGImage
;
CGRect rect = CGRectMake
(origin.x
, origin.y
,size.width
, size.height
);
CGImageRef imageRefRect = CGImageCreateWithImageInRect
(imageRef,
rect);
UIImage *imageRect = [[UIImage
alloc
] initWithCGImage
:imageRefRect];
2、判断设备是iphone还是iphone4的代码:
#define isRetina ([UIScreen
instancesRespondToSelector:@selector(currentMode)] ?
CGSizeEqualToSize(CGSizeMake(640
, 960
), [[UIScreen mainScreen]
currentMode].size) : NO)
3、判断邮箱输入的是否正确:
-
(BOOL
) validateEmail:
(NSString
*) candidate {
NSString
*emailRegex =
@"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+//.[A-Za-z]{2,4}";
NSPredicate
*emailTest =
[NSPredicate
predicateWithFormat
:@"SELF MATCHES %@"
,
emailRegex];
return
[emailTest evaluateWithObject
:candidate];
}
4、如何把当前的视图作为照片保存到相册中去:
#import
<QuartzCore/QuartzCore.h>
UIGraphicsBeginImageContext(currentView.bounds
.size
);
//currentView
当前的
view
[currentView.
layer
renderInContext:
UIGraphicsGetCurrentContext()];
UIImage *viewImage =
UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage, nil
, nil
, nil
);
5、本地通知(类似于push通知)按home键到后台
十秒后触发:
UILocalNotification *notification=[[UILocalNotification
alloc
] init
];
if
(notification!=nil
) {
NSLog
(
@">> support
local notification");
NSDate
*now=[NSDate
new
];
notification.fireDate
=[now
addTimeInterval
:10
];
notification.timeZone
=[NSTimeZone
defaultTimeZone
];
notification.alertBody
=@"
该去吃晚饭了!
"
;
[[
UIApplication
sharedApplication].
scheduleLocalNotification:notification];
}
6、捕获iphone通话事件:
CTCallCenter *center = [[CTCallCenter alloc
] init
];
center.callEventHandler = ^(CTCall *call
)
{
NSLog
(@"call:%@"
, call
.callState);
}
7、
iOS
4
引入了多任务支持,所以用户按下 “Home”
键以后程序可能并没有退出而是转入了后台运行。如果您想让应用直接退出,最简单的方法是:在 info
-plist
里面找到 Application does not run in
background
一项,勾选即可。
8、使UIimageView的图像旋转:
float
rotateAngle =
M_PI
;
CGAffineTransform transform =CGAffineTransformMakeRotation
(rotateAngle);
imageView.transform = transform;
9、设置旋转的原点:
#import
<QuartzCore/QuartzCore.h>
UIImageView *imageView = [[UIImageView
alloc
] initWithImage
:[UIImage
imageNamed
:@"bg.png"
]];
imageView.layer.anchorPoint = CGPointMake
(0.5
, 1.0
);
10、实现自定义的状态栏(遮盖状态栏):
CGRect frame = {{0
,
0
}, {320
, 20
}};
UIWindow* wd = [[UIWindow
alloc
] initWithFrame
:frame];
[wd
setBackgroundColor:[
UIColor
clearColor]];
[wd
setWindowLevel
:
UIWindowLevelStatusBar];
frame = CGRectMake
(100
, 0
,
30
, 20
);
UIImageView* img = [[UIImageView
alloc
] initWithFrame
:frame];
[img
setContentMode:
UIViewContentModeCenter];
[img
setImage:[
UIImage
imageNamed:
@"00_0103.png"
]];
[wd
addSubview
:img];
[wd
makeKeyAndVisible];
[
UIView
beginAnimations:
nil
context:
nil
];
[
UIView
setAnimationDuration:
2
];
frame.origin.x += 150
;
[img
setFrame
:frame];
[
UIView
commitAnimations];
11、在程序中实现电话的拨打:
//
添加电话图标按钮
UIButton *btnPhone =
[[
UIButton
buttonWithType:
UIButtonTypeCustom]
retain];
btnPhone.frame = CGRectMake
(280
,10
,30
,30
);
UIImage *image = [UIImage
imageNamed
:@"phone.png"
];
[btnPhone
setBackgroundImage:image
forState:
UIControlStateNormal];
//
点击拨号按钮直接拨号
[btnPhone
addTarget:
self
action:
@selector
(callAction:event:)
forControlEvents:
UIControlEventTouchUpInside];
[cell.
contentView
addSubview
:btnPhone];
//cell是一个
UITableViewCell
//
定义点击拨号按钮时的操作
-
(void
)callAction:(id
)sender event:(id
)event{
NSSet
*touches = [event
allTouches
];
UITouch
*touch = [touches
anyObject
];
CGPoint
currentTouchPosition =
[touch locationInView
:self
.listTable];
NSIndexPath
*indexPath =
[self
.listTable indexPathForRowAtPoint
:
currentTouchPosition];
if
(indexPath == nil
) {
return;
}
NSInteger
section = [indexPath
section
];
NSUInteger
row = [indexPath
row
];
NSDictionary
*rowData = [datas
objectAtIndex
:row];
NSString
*num = [[NSString
alloc
] initWithFormat
:@"tel://%@"
,number]; //number
为号码字符串
[[
UIApplication
sharedApplication]
openURL:[
NSURL
URLWithString:num]];
//
拨号
}
12、更改iphone的键盘颜色:
1.
只有这
2种数字键盘才有效果。
UIKeyboardTypeNumberPad,
UIKeyboardTypePhonePad
2.
keyboardAppearance
=
UIKeyboardAppearanceAlert
-
(void
)textViewDidBeginEditing:(UITextView
*)textView{
NSArray
*ws = [[
UIApplication
sharedApplication]
windows];
for
(UIView
*w in
ws){
NSArray
*vs = [w subviews
];
for
(UIView
*v in
vs)
{
if
([[
NSString
stringWithUTF8String:
object_getClassName(v)]
isEqualToString:
@"UIKeyboard"
])
{
v.
backgroundColor = [
UIColor redColor
];
}
}
}
13、设置时区
NSTimeZone
*defaultTimeZone = [NSTimeZone
defaultTimeZone
];
NSTimeZone *tzGMT = [
NSTimeZone
timeZoneWithName
:
@"GMT"
];
[
NSTimeZone
setDefaultTimeZone:tzGMT];
上面两个时区任意用一个。
14、Ipad隐藏键盘的同时触发方法。
[[
NSNotificationCenter
defaultCenter]
addObserver:
self
selector
:@selector
(keyboardWillHide:)
name
:
UIKeyboardWillHideNotification
object
:nil
];
-
(IBAction
)keyboardWillHide:(NSNotification
*)note
14、在一个程序中打开另一个程序的方法。
http://www.cocoachina.com/iphonedev/sdk/2010/0322/768.html
15、计算字符串的字数
-(int
)calculateTextNumber:(NSString
*)text
{
float
number = 0.0
;
int
index = 0
;
for
(index; index
< [text length
];
index++)
{
NSString
*protoText = [text
substringToIndex
:[text
length
] - index];
NSString
*toChangetext = [text
substringToIndex
:[text
length
] -1
-index];
NSString
*charater;
if
([toChangetext length
]==0
)
{
charater = protoText;
}
else
{
NSRange
range = [text
rangeOfString
:toChangetext];
charater = [protoText
stringByReplacingCharactersInRange:range
withString:
@""
];
}
NSLog
(charater);
if
([charater
lengthOfBytesUsingEncoding:
NSUTF8StringEncoding] ==
3
)
{
number++;
}
else
{
number = number+0.5
;
}
}
return
ceil
(number);
}
摘自:http://blog.sina.com.cn/s/blog_6a2cbc930100m7eh.html
相关文章推荐
- iphone开发中的一些小技巧
- iphone开发中的一些小技巧
- iphone开发中的一些小技巧
- iphone 开发的一些小技巧
- iphone开发中的一些小技巧
- iphone开发中的一些小技巧
- iphone开发中的一些小技巧
- iphone开发中的一些小技巧
- iphone开发中的一些小技巧
- iPhone开发的一些小技巧
- iPhone开发中一些使用小技巧
- iphone开发中的一些小技巧
- iPhone开发的一些小技巧
- iPhone开发的一些小技巧
- iPhone 开发的一些小技巧
- iphone开发中的一些小技巧
- iphone开发中的一些小技巧
- iphone开发中的一些小技巧
- [转载]iPhone开发的一些小技巧
- iphone开发中的一些小技巧