您的位置:首页 > 移动开发 > IOS开发

iOS开发笔记

2015-05-21 17:22 162 查看
1、iOS图片拉伸:

使用-
(UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets方法拉伸图片,(对有波浪线边的图片特别适用)
UIImage *image = [UIImage imageNamed:@"background.png"];
image = [cellBackImage resizableImageWithCapInsets:UIEdgeInsetsMake(10, 320, 10, 0)];


2、UILongPressGestureRecognizer绑定的方法执行了两次

UILongPressGestureRecognizer有多个状态,begin、changed、ended等,这个Gesture在按下去时候也就是begin,会执行一次;抬起来的时候ended再次执行一次。这样的话如果是长按弹出分享界面的话,就会弹两次。

解决办法:

- (void)longressAction:(UIGestureRecognizer *)gestrue
{
if (gestrue.state != UIGestureRecognizerStateBegan)
{
return;//什么操作都不做,直接跳出此方法
}
//此处执行你想要执行的代码
}


3、限制用户输入文字内容的长度(此文参考自:这篇博客)

之前做了一个功能,就是要求限制用户在密码输入框中输入12位长度以内的密码,如果超出,则不显示,也就是不能再输入了。当时在往上面找了很多的实现方式,发现都不能实现我想要的效果,因为如果是英文状态下,那很好判断;但是如果键盘模式是中文状态,那么就会出现问题,比如你输入“天气真好啊”,然后按return按键,这时候直接把对应的拼音给输入到了输入框中,超过了12个长度限制,这时候又会发现新的bug,就是超过了长度之后,也不能删除输入框中的内容。这样的代码放到项目中肯定要被老板和客户给骂死了,后来在一片中文博客中找到了解决方案,原文链接在此,主要代码如下,

在viewDidLoad中注册一个监听TextField输入框改变的监听事件,

- (void)viewDidLoad

{

[super viewDidLoad];

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFiledEditChanged:)

name:UITextFieldTextDidChangeNotification

object:userClientTF];

}

实现监听的方法,

-(void)textFiledEditChanged:(NSNotification *)obj{

UITextField *textField = (UITextField *)obj.object;

NSString *toBeString = textField.text;

NSString *lang = [[UITextInputMode currentInputMode] primaryLanguage]; // 键盘输入模式

if ([lang isEqualToString:@"zh-Hans"])
{ // 简体中文输入,包括简体拼音,健体五笔,简体手写

UITextRange *selectedRange = [textField markedTextRange];

//获取高亮部分

UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];

// 没有高亮选择的字,则对已输入的文字进行字数统计和限制

if (!position) {

if (toBeString.length > kMaxLength) {

textField.text = [toBeString substringToIndex:kMaxLength];

}

}

// 有高亮选择的字符串,则暂不对文字进行统计和限制

else{

}

}

// 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况

else{

if (toBeString.length > kMaxLength) {

textField.text = [toBeString substringToIndex:kMaxLength];

}

}

}

在dealloc中注销监听事件,

- (void)dealloc {

[[NSNotificationCenter defaultCenter]removeObserver:self

name:UITextFieldTextDidChangeNotification

object:userClientTF];

[super dealloc];

}

4、图片保存到本地相册(此文参考自:这篇博客

点击按钮,将self.imageView上面的image内容保存到本地相册,并指定判断保存成功与否的方法imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:

- (IBAction)saveImageToAlbum:(id)sender
{

UIImageWriteToSavedPhotosAlbum(self.imageView.image, self, @selector(imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:), nil);

}

实现imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:方法

- (void)imageSavedToPhotosAlbum:(UIImage *)image
didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo

{

NSString *message = @"呵呵";

if (!error) {

message = @"成功保存到相册";

}else

{

message = [error description];

}

NSLog(@"message
is %@",message);

}

这些代码很简单,如果没有错误的话就提示“成功保存到相册”,如果保存失败的话,那么就输出错误信息[error description]。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: