Tag Archives: 算法技巧

ios开发获取手机通讯录(最简单明了)

网上搜索了很多相关资料都写得过于复杂,可我们最常用的只需要用到姓名与电话号码,所以我整理了一下,只需要一个方法搞定!慢慢看吧
1、导入AddressBook.framework先,然后引用 #import
2、授权,如果已成功,读取通讯录数据到数组里,否则程序会崩溃
3、读取方法

1
- (NSArr[......]<p class="read-more"><a href="https://www.yusian.com/blog/project/2014/08/20/113351541.html">继续阅读</a></p>

自定义UISearchBar 适配IOS6和IOS7

考虑到统一ios6与ios7的界面风格,UISearchBar通过重自定义来实现,重写一个类继承自UISearchBar

1、效果图:

QQ20140819-1@2x

2、部分代码:
附注释说明

1
2
3
4
5
6
7
8
9
10
SASearchBar.h
#import &lt;UIKit/UIKit.h&gt;
 
@interface SASearchBar : UISearchBar
 
@property (nonatomic, strong)   UITextField     *textField;
 
@property (nonatomic, strong)   UIButton        *searchBtn;
 
@end

SASearchBar.m[……]

继续阅读

iOS6创建iOS7风格导航导,导航条自动添加返回按钮

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
- (void)viewDidLoad
{
    [super viewDidLoad];
 
    if ([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0) {
 
        // 1、修改导航条样式
        UINavigationBar *bar = [UINavigationBar appearance];
        // 修改导航条背景
        [bar setBackgroundImage:[UIImage imageNamed:@"navigationbar_background.png"] forBarMetrics:UIBarMetricsDefault];
        // 修改导航条文字样式
        [bar setTitleTextAttributes:@{
                                      UITextAttributeTextColor : [UIColor blackColor],
                                      UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetZero]
                                      }];
 
 
        // 2、修改导航条按钮样式
        UIBarButtonItem *item = [UIBarButtonItem appearance];
 
        UIImage *normal = [UIImage imageNamed:@"navigationbar_button_background.png"];
        UIImage *highlight = [UIImage imageNamed:@"navigationbar_button_background_pushed.png"];
 
        // 修改导航条按钮背景
        [item setBackgroundImage:normal forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
        [item setBackgroundImage:highlight forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
 
        // 修改导航条按钮文字样式
        [item setTitleTextAttributes:@{
                                       UITextAttributeTextColor : kBlueColor,
                                       UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetZero],
                                       } forState:UIControlStateNormal];
        [item setTitleTextAttributes:@{
                                       UITextAttributeTextColor : kBlueColor,
                                       UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetZero]
                                       } forState:UIControlStateHighlighted];
 
        [item setBackButtonBackgroundImage:normal forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
        [item setBackButtonBackgroundImage:highlight forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
 
        // 3、修改状态栏样式
        [UIApplication sharedApplication].statusBarHidden = NO;
        [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleBlackOpaque;
 
    }
}
 
#pragma mark - 2、代理方法
#pragma mark 2.1、控制器将要视图显示
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    // 在未自定义导航条返回键的情况下,iOS6及以下版本设备导航条自动添加仿iOS7返回按钮(根控制器例外)
    if (!(viewController == navigationController.viewControllers.firstObject || [(RMBaseVCtrl *)viewController isCustomNBI]) && [viewController isKindOfClass:[RMBaseVCtrl class]]){
 
        // 栈控制器数组
        NSArray *vcs = navigationController.viewControllers;
 
        // 前一个控制器序号
        int penultimate = (int)vcs.count - 2;
 
        if (penultimate >= 0) {
 
            // 前一个控制器标题[......]<p class="read-more"><a href="https://www.yusian.com/blog/project/2014/08/09/232925559.html">继续阅读</a></p>

轻松搭建新特性界面、向导页(自适应各种屏幕尺寸)

1、应用场景

新软件安装在第一次打开时都会有该软件或版本的介绍,在iOS中最经典的做法是搭建一个ScrollView分页展示
但考虑到iPhone4系统与iPhone5系统,屏幕适配如何更为科学简单是一门学问,以下提供一个参考

2、图片命名

一般是三图片,Retina屏之前屏幕一套、iPhone4(4S)一套、iPhone5(5C/5S)一套

1
2
3
  xxx_序号.png         // iPhone3GS及以前,可忽略
  xxx_序号@2x.png      // iPhone4及iPhone4S
  xxx_序号-568h@2x.png // iPhone5及iPhone5C、iPhone5S

如:

1
2
3
4
5
6
7
8
9
  new_feature_1.png
  new_feature_1@2x.png
  new_feature_1-568h@2x.png
  new_feature_2.png
  new_feature_2@2x.png
  new_feature_2-568h@2x.png
  new_feature_3.png
  new_feature_3@2x.png 
  new_feature_3-568h@2x.png

3、文件名自动识别

3.1、增加两个Category[……]

继续阅读

UITextField限制中文输入长度

需求:输入框内输入文字字数限制在20字。

方案一:采用了UITextField作为我的输入框控件,并且在委托方法:

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

中实现了对字符串的长度限制,实现如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#define kMaxLength 20
 
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
 
   NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string];
 
   if (toBeString.length &gt; kMaxLength &amp;&amp; range.length!=1){
 
       textField.text = [toBeString substringToIndex:kMaxLength];
 
       return NO;
 
   }
   return YES;
}

方案二:注册这个观察者 UITextFieldTextDidChangeNotification

1
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textDidChange:) name:UITextFieldTextDidChangeNotification object:nil];

然后实现这个通知方法即可。[……]

继续阅读