iOS - 初级封装

【浅学封装思想】

实例壹:创建微博框架。首先是创建一个UITabBarController,在下面显示栏再创建四个 UIViewController。如下四个文本:

1 //  AppDelegate.h - 版本1
2 //  Emo微博
3
4 #import <UIKit/UIKit.h>
5
6 @interface AppDelegate : UIResponder <UIApplicationDelegate>
7 @property (strong, nonatomic) UIWindow *window;
8 @end
 1 //  AppDelegate.m - 版本1
 2 //  Emo微博
 3
 4 #import "AppDelegate.h"
 5 #import "EmoTabBarController.h"
 6 // 封装思想:如果以后项目中,有相同的功能,抽取一个类,封装好,如何封装,自己的事情全部交给自己管理。
 7 // 抽方法:一般一个功能就抽一个方法。
 8
 9 @interface AppDelegate ()
10 @end
11
12 @implementation AppDelegate
13
14 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
15     // Override point for customization after application launch.
16
17     // 创建窗口
18     self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
19     // 创建tabBarVc
20     EmoTabBarController *tabBarVc = [[EmoTabBarController alloc] init];
21     // 设置窗口的根控制器
22     self.window.rootViewController = tabBarVc;
23     // 显示窗口
24     [self.window makeKeyAndVisible];
25
26     return YES;
27 }
28 @end
1 //  EmoTabBarController.h - 版本1
2 //  Emo微博
3
4 #import <UIKit/UIKit.h>
5
6 @interface EmoTabBarController : UITabBarController
7 @end
 1 //  EmoTabBarController.m - 版本1
 2 //  Emo微博
 3 #import "EmoTabBarController.h"
 4
 5 @interface EmoTabBarController()
 6 @end
 7
 8 @implementation EmoTabBarController
 9
10 - (void)viewDidLoad {
11     [super viewDidLoad];
12     [self setUpAllChildViewController];
13 }
14
15 - (void)setUpAllChildViewController
16 {
17
18     // 首页
19     UIViewController *home = [[UIViewController alloc] init];
20     home.tabBarItem.title = @"首页";
21     home.tabBarItem.image = [UIImage imageNamed:@"tabbar_home"];
22  // home.tabBarItem.selectedImage = [UIImage imageNamed:@"tabbar_home_selected"];//仅仅是这句话那么图片控件会被系统默认为是蓝色。
23     UIImage*selImage = [UIImage imageNamed:@"tabbar_home_selected"];
24     selImage = [selImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
25     home.tabBarItem.selectedImage =selImage;
26     home.view.backgroundColor = [UIColor greenColor];
27     [self addChildViewController:home];
28
29     // 消息
30     UIViewController *message = [[UIViewController alloc] init];
31     message.tabBarItem.title = @"消息";
32     message.view.backgroundColor = [UIColor blueColor];
33     message.tabBarItem.image = [UIImage imageNamed:@"tabbar_message"];
34     UIImage*selImage = [UIImage imageNamed:@"tabbar_message_selected"];
35     selImage = [selImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
36     home.tabBarItem.selectedImage =selImage;
37     [self addChildViewController:home];
38
39     // 发现
40     UIViewController *discover= [[UIViewController alloc] init];
41     discover.tabBarItem.title = @"发现";
42     discover.view.backgroundColor = [UIColor redColor];
43     discover.tabBarItem.image = [UIImage imageNamed:@"tabbar_discover"];
44     UIImage*selImage = [UIImage imageNamed:@"tabbar_discover_selected"];
45     selImage = [selImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
46     discover.tabBarItem.selectedImage =selImage;
47     [self addChildViewController:home];
48
49     // 我
50     UIViewController *profile= [[UIViewController alloc] init];
51     profile.tabBarItem.title = @"我";
52     profile.view.backgroundColor = [UIColor blueColor];
53     profile.tabBarItem.image = [UIImage imageNamed:@"tabbar_profile"];
54     UIImage*selImage = [UIImage imageNamed:@"tabbar_profile_selected"];
55     selImage = [selImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
56     discover.tabBarItem.selectedImage =selImage;
57     [self addChildViewController:home];
58
59 }60 @end

实例贰:倘若把下面这一段单独抽取出来写成分类,

 1 //  EmoTabBarController.m
 2 //  Emo微博...
23     UIImage*selImage = [UIImage imageNamed:@"tabbar_home_selected"];
24     selImage = [selImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
25     home.tabBarItem.selectedImage =selImage;

可以先创建一个分类“UIImage+Image”

1 //  UIImage+Image.h - 版本1
2 //  Emo微博
3
4 #import <UIKit/UIKit.h>
5
6 @interface UIImage (Image)
7 + (instancetype)imageWithOriginalName:(NSString *)imageName;
8 @end
 1 //  UIImage+Image.m - 版本1
 2 //  Emo微博
 3
 4 #import "UIImage+Image.h"
 5 @implementation UIImage (Image)
 6
 7 // 抽取出来后改写为“+ (instancetype)imageWithOriginalName:(NSString *)imageName”
 8 // UIImage*selImage = [UIImage imageNamed:@"tabbar_home_selected"];
 9 // selImage = [selImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
10 // home.tabBarItem.selectedImage =selImage;
11
12 + (instancetype)imageWithOriginalName:(NSString *)imageName
13 {
14     UIImage *image = [UIImage imageNamed:imageName];
15     return [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
16 }
17
18 @end

在“EmoTabBarController.m”中抽取出来后,替换上面的” EmoTabBarController.m“为如下代码:

 1 //  EmoTabBarController.m - 版本2
 2 //  Emo微博
 3
 4 #import "EmoTabBarController.h"
 5 #import "UIImage+Image.h"
 6
 7 @interface EmoTabBarController ()
 8 @end
 9
10 @implementation EmoTabBarController
11
12 - (void)viewDidLoad {
13     [super viewDidLoad];
14     // Do any additional setup after loading the view.
15
16     // 添加所有子控制器
17     [self setUpAllChildViewController];
18
19 }
20 // 在ios7之后,默认会把UITabBar上面的按钮图片渲染成蓝色
21 #pragma mark - 添加所有的子控制器
22 - (void)setUpAllChildViewController
23 {
24     // 首页
25     UIViewController *home = [[UIViewController alloc] init];
26     home.tabBarItem.title = @"首页";
27     home.tabBarItem.image = [UIImage imageNamed:@"tabbar_home"];
28     // 调用子类"UImage+image“的方法”imageWithOriginalName“并传入参数
29     home.tabBarItem.selectedImage = [UIImage imageWithOriginalName:@"tabbar_home_selected"];
30     home.view.backgroundColor = [UIColor greenColor];
31     [self addChildViewController:home];
32
33     // 消息
34     UIViewController *message = [[UIViewController alloc] init];
35     message.tabBarItem.title = @"首页";
36     message.tabBarItem.image = [UIImage imageNamed:@"tabbar_message"];
37     message.tabBarItem.selectedImage = [UIImage imageWithOriginalName:@"tabbar_message_selected"];
38     message.view.backgroundColor = [UIColor greenColor];
39     [self addChildViewController:message];
40
41     // 发现
42     UIViewController *discover = [[UIViewController alloc] init];
43     discover.tabBarItem.title = @"首页";
44     discover.tabBarItem.image = [UIImage imageNamed:@"tabbar_discover"];
45     discover.tabBarItem.selectedImage = [UIImage imageWithOriginalName:@"tabbar_discover_selected"];
46     discoverview.backgroundColor = [UIColor greenColor];
47     [self addChildViewController:discover];
48
49     // 我
50     UIViewController *profile = [[UIViewController alloc] init];
51     profile.tabBarItem.title = @"首页";
52     profile.tabBarItem.image = [UIImage imageNamed:@"tabbar_profile"];
53     profile.tabBarItem.selectedImage = [UIImage imageWithOriginalName:@"tabbar_profile_selected"];
54     profile.view.backgroundColor = [UIColor greenColor];
55     [self addChildViewController:profile ];
56 }
57
58 @end

实例叁:再看看下面这一部分代码:

24     // 首页
25     UIViewController *home = [[UIViewController alloc] init];
26     home.tabBarItem.title = @"首页";
27     home.tabBarItem.image = [UIImage imageNamed:@"tabbar_home"];
28     // 调用子类"UImage+image“的方法”imageWithOriginalName“并传入参数
29     home.tabBarItem.selectedImage = [UIImage imageWithOriginalName:@"tabbar_home_selected"];
30     home.view.backgroundColor = [UIColor greenColor];
31     [self addChildViewController:home];

其实都是在添加一个子控制器,所以可以抽取出一个方法且加入参数让其传进来,所以代码可以修改为:

 1 //  EmoTabBarController.m - 版本3
 2 //  传智微博
 3
 4
 5 #import "EmoTabBarController.h"
 6 #import "UIImage+Image.h"
 7
 8 @interface EmoTabBarController ()
 9 @end
10
11 @implementation EmoTabBarController
12
13 - (void)viewDidLoad {
14     [super viewDidLoad];
15     // Do any additional setup after loading the view.
16
17     // 添加所有子控制器
18     [self setUpAllChildViewController];
19
20 }
21
22 // 如果通过模型设置控件的文字颜色,只能通过文本属性(富文本:颜色,字体,空心,阴影,图文混排)
23 // 在ios7之后,默认会把UITabBar上面的按钮图片渲染成蓝色
24 #pragma mark - 添加所有的子控制器
25 - (void)setUpAllChildViewController
26 {
27     // 首页
28     UIViewController *home = [[UIViewController alloc] init];
29     // imageWithOriginalName:这个参数只能改变选中的按钮图片不为系统默认的蓝色,但是按钮的文字改不了,要在下面的封装部分修改。
30     [self setUpOneChildViewController:home image:[UIImage imageNamed:@"tabbar_home"] selectedImage:[UIImage imageWithOriginalName:@"tabbar_home_selected"] title:@"首页"];
31     home.view.backgroundColor = [UIColor greenColor];
32
33     // 消息
34     UIViewController *message = [[UIViewController alloc] init];
35     [self setUpOneChildViewController:message image:[UIImage imageNamed:@"tabbar_message_center"] selectedImage:[UIImage imageWithOriginalName:@"tabbar_message_center_selected"] title:@"消息"];
36     message.view.backgroundColor = [UIColor blueColor];
37
38     // 发现
39     UIViewController *discover = [[UIViewController alloc] init];
40     [self setUpOneChildViewController:discover image:[UIImage imageNamed:@"tabbar_discover"] selectedImage:[UIImage imageWithOriginalName:@"tabbar_discover_selected"] title:@"发现"];
41     discover.view.backgroundColor = [UIColor purpleColor];
42
43
44     // 我
45     UIViewController *profile = [[UIViewController alloc] init];
46     [self setUpOneChildViewController:profile image:[UIImage imageNamed:@"tabbar_profile"] selectedImage:[UIImage imageWithOriginalName:@"tabbar_profile_selected"] title:@"我"];
47     profile.view.backgroundColor = [UIColor lightGrayColor];
48 }
49
50 #pragma mark - 添加一个子控制器
51 - (void)setUpOneChildViewController:(UIViewController *)vc image:(UIImage *)image selectedImage:(UIImage *)selectedImage title:(NSString *)title
52 {
53     // 待传进标题
54     vc.tabBarItem.title = title;
55     // 待传进正常状态下的图片
56     vc.tabBarItem.image = image;
57     // 下面三行是让按钮的文字也变成窗口的颜色
58     NSMutableDictionary *att = [NSMutableDictionary dictionary];       // [NSForegroundColorAttributeName]传key,[UIColor orangeColor]传 value。
59     att[NSForegroundColorAttributeName] = [UIColor orangeColor];
60     [vc.tarBarItem.setTitleTextAttributes:att forState: UIControlStateSelected];
61     // 让所有子控制器都显示10条显示
62     vc.tabBarItem.badgeValue = @"10";
63     // 传进选中时显示的图片
64     vc.tabBarItem.selectedImage = selectedImage;
65
66     [self addChildViewController:vc];
67 }
68
69 @end

实例肆:接着看看修改过的” EmoTabBarController.m“,其实下面这段代码还可以再做封装。

57     // 下面三行是让按钮的文字也变成窗口的颜色
58     NSMutableDictionary *att = [NSMutableDictionary dictionary];
59     [att setObject:[UIColor orangeColor] forKey:NSForegroundColorAttributeName];
60     [vc.tarBarItem.setTitleTextAttributes:att forState: UIControlStateSelected];

用全局方法实现上面功能,如下代码:

 1 // EmoTabBarController.m - 版本4
 2 // Emo微博
 3
 4 #import "EmoTabBarController.h"
 5 #import "UIImage+Image.h"
 6
 7 @interface EmoTabBarController ()
 8 @end
 9
10 @implementation EmoTabBarController
11
12 // 什么时候调用:当第一次使用这个类或者子类的时候调用
13 // ”+ (void)initialize{}“作用:类的初始化,其实”+ (void)load{}“也是可以初始化类的
14 + (void)initialize
15 {
16     // 获取所有的tabBarItem外观标识,appearance只要一个类遵守UIAppearance,就能获取全局的外观,UIView
18     // 获取方法一:
19     // UITabBarItem *item = [UITabBarItem appearance];
20     //为什么不用方法一的原因是:所有文件中,只要是协议里的 tabBarItem 都会被修改
21
22     // 方法二:
23     // self是指向EmoTabBarController
24     // 下面的代码意思是:仅仅获取当前这个类下面的所有tabBarItem,对其他文件中的 tabBarItem 无效。
25     UITabBarItem *item = [UITabBarItem appearanceWhenContainedIn:self, nil];
26
27     NSMutableDictionary *att = [NSMutableDictionary dictionary];
28     att[NSForegroundColorAttributeName] = [UIColor orangeColor];
29     [item setTitleTextAttributes:att forState:UIControlStateSelected];
30 }
31
32 - (void)viewDidLoad {
33     [super viewDidLoad];
34     // Do any additional setup after loading the view.
35
36     // 添加所有子控制器
37     [self setUpAllChildViewController];
38 }
39
40 // 如果通过模型设置控件的文字颜色,只能通过文本属性(富文本:颜色,字体,空心,阴影,图文混排)
41 // 在ios7之后,默认会把UITabBar上面的按钮图片渲染成蓝色
42 #pragma mark - 添加所有的子控制器
43 - (void)setUpAllChildViewController
44 {
45     // 首页
46     UIViewController *home = [[UIViewController alloc] init];
47     [self setUpOneChildViewController:home image:[UIImage imageNamed:@"tabbar_home"] selectedImage:[UIImage imageWithOriginalName:@"tabbar_home_selected"] title:@"首页"];
48     home.view.backgroundColor = [UIColor greenColor];
49
50     // 消息
51     UIViewController *message = [[UIViewController alloc] init];
52     [self setUpOneChildViewController:message image:[UIImage imageNamed:@"tabbar_message_center"] selectedImage:[UIImage imageWithOriginalName:@"tabbar_message_center_selected"] title:@"消息"];
53     message.view.backgroundColor = [UIColor blueColor];
54
55     // 发现
56     UIViewController *discover = [[UIViewController alloc] init];
57     [self setUpOneChildViewController:discover image:[UIImage imageNamed:@"tabbar_discover"] selectedImage:[UIImage imageWithOriginalName:@"tabbar_discover_selected"] title:@"发现"];
58     discover.view.backgroundColor = [UIColor purpleColor];
59
61     // 我
62     UIViewController *profile = [[UIViewController alloc] init];
63     [self setUpOneChildViewController:profile image:[UIImage imageNamed:@"tabbar_profile"] selectedImage:[UIImage imageWithOriginalName:@"tabbar_profile_selected"] title:@"我"];
64     profile.view.backgroundColor = [UIColor lightGrayColor];
65 }
66
67 #pragma mark - 添加一个子控制器
68 - (void)setUpOneChildViewController:(UIViewController *)vc image:(UIImage *)image selectedImage:(UIImage *)selectedImage title:(NSString *)title
69 {
70     vc.tabBarItem.title = title;
71     vc.tabBarItem.image = image;
72     //***此处被剪切到上面作为全局效果***//
73     vc.tabBarItem.badgeValue = @"10";
74     vc.tabBarItem.selectedImage = selectedImage;
75     [self addChildViewController:vc];
76 }
77
79 @end

经过上述肆个案例之后,展示效果为:

     

实例伍:想要修改下面横栏按钮的位置,需要自定义一个 tabBar。新建一个UITabBar:

1 //  EmoTabBar.h - 版本1
2 //  Emo微博
3
4 #import <UIKit/UIKit.h>
5
6 @interface EmoTabBar : UITabBar
7 @end
 1 //  EmoTabBar.m - 版本1
 2 //  Emo微博
 3
 4 #import "EmoTabBar.h"
 5 @interface EmoTabBar ()
 6 @property (nonatomic, weak) UIButton *plusButton;
 7 @end
 8
 9 @implementation EmoTabBar
10
11 - (UIButton *)plusButton
12 {
13     if (_plusButton == nil) {
14
15         UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
16         [btn setImage:[UIImage imageNamed:@"tabbar_compose_icon_add"] forState:UIControlStateNormal];
17         [btn setImage:[UIImage imageNamed:@"tabbar_compose_background_icon_add"] forState:UIControlStateHighlighted];
18         [btn setBackgroundImage:[UIImage imageNamed:@"tabbar_compose_button"] forState:UIControlStateNormal];
19         [btn setBackgroundImage:[UIImage imageNamed:@"tabbar_compose_button_highlighted"] forState:UIControlStateHighlighted];
20
21         // 默认按钮的尺寸跟背景图片一样大
22         // sizeToFit:默认会根据按钮的背景图片或者image和文字计算出按钮的最合适的尺寸
23         [btn sizeToFit];
24
25         _plusButton = btn;
26
27         [self addSubview:_plusButton];
28
29     }
30     return _plusButton;
31 }
32
33 // self.items UITabBarItem模型,有多少个子控制器就有多少个UITabBarItem模型
34 // 调整子控件的位置
35 - (void)layoutSubviews
36 {
37     [super layoutSubviews];
38
39     CGFloat w = self.bounds.size.width;
40     CGFloat h = self.bounds.size.height;
41
42     CGFloat btnX = 0;
43     CGFloat btnY = 0;
44     CGFloat btnW = w / (self.items.count + 1);
45     CGFloat btnH = self.bounds.size.height;
46
47     int i = 0;
48    // 调整系统自带的tabBar上的按钮位置
49     for (UIView *tabBarButton in self.subviews) {
50         // 判断下是否是UITabBarButton
51         if ([tabBarButton isKindOfClass:NSClassFromString(@"UITabBarButton" )]) {
52             if (i == 2) {
53                 i = 3;
54             }
55             btnX = i * btnW;
56
57             tabBarButton.frame = CGRectMake(btnX, btnY, btnW, btnH);
58
59             i++;
60         }
61     }
62
63
64     // 设置添加按钮的位置
65     self.plusButton.center = CGPointMake(w * 0.5, h * 0.5);
66 }
67
68 @end
  1 //  EmoTabBarController.m - 版本5
  2 //  Emo微博
  3
  4
  5 #import "EmoTabBarController.h"
  6 #import "UIImage+Image.h"
  7 #import "EmoTabBar.h"
  8
  9 #import <objc/message.h>
 10
 11 @interface EmoTabBarController ()
 12 @end
 13
 14 @implementation EmoTabBarController
 15
 16 // 什么调用:当第一次使用这个类或者子类的时候调用
 17 // 作用:初始化类
 18 // appearance只要一个类遵守UIAppearance,就能获取全局的外观,UIView
 19 + (void)initialize
 20 {
 21     // 获取所有的tabBarItem外观标识
 22 //    UITabBarItem *item = [UITabBarItem appearance];
 23
 24     // self -> CZTabBarController
 25     // 获取当前这个类下面的所有tabBarItem
 26     UITabBarItem *item = [UITabBarItem appearanceWhenContainedIn:self, nil];
 27
 28     NSMutableDictionary *att = [NSMutableDictionary dictionary];
 29     att[NSForegroundColorAttributeName] = [UIColor orangeColor];
 30     //    [att setObject:[UIColor orangeColor] forKey:NSForegroundColorAttributeName];
 31
 32     [item setTitleTextAttributes:att forState:UIControlStateSelected];
 33 }
 34
 35 - (void)viewDidLoad {
 36     [super viewDidLoad];
 37     // Do any additional setup after loading the view.
 38     // 添加所有子控制器
 39     [self setUpAllChildViewController];
 40     // 自定义tabBar
 41     EmoTabBar *tabBar = [[EmoTabBar alloc] initWithFrame:self.tabBar.frame];
 42     NSLog(@"%@",self.tabBar);
 43     // 利用KVC把readly的属性改
 44     [self setValue:tabBar forKeyPath:@"tabBar"];
 45     // objc_msgSend(self, @selector(setTabBar:),tabBar);//xcode 不希望用户使用消息机制
 46     NSLog(@"%@",self.tabBar);
 47     // self.tabBar = tabBar;
 48     // 修改系统tabBar上面的按钮的位置
 49 //    NSLog(@"%@",self.tabBar.subviews);
 50 //
 51 //    self.tabBar =
 52 }
 53
 54 - (void)viewWillAppear:(BOOL)animated
 55 {
 56     [super viewWillAppear:animated];
 57
 58 }
 59
 60 // 如果通过模型设置控件的文字颜色,只能通过文本属性(富文本:颜色,字体,空心,阴影,图文混排)
 61
 62 // 在ios7之后,默认会把UITabBar上面的按钮图片渲染成蓝色
 63 #pragma mark - 添加所有的子控制器
 64 - (void)setUpAllChildViewController
 65 {
 66     // 首页
 67     UIViewController *home = [[UIViewController alloc] init];
 68     [self setUpOneChildViewController:home image:[UIImage imageNamed:@"tabbar_home"] selectedImage:[UIImage imageWithOriginalName:@"tabbar_home_selected"] title:@"首页"];
 69     home.view.backgroundColor = [UIColor greenColor];
 70
 71     // 消息
 72     UIViewController *message = [[UIViewController alloc] init];
 73     [self setUpOneChildViewController:message image:[UIImage imageNamed:@"tabbar_message_center"] selectedImage:[UIImage imageWithOriginalName:@"tabbar_message_center_selected"] title:@"消息"];
 74     message.view.backgroundColor = [UIColor blueColor];
 75
 76     // 发现
 77     UIViewController *discover = [[UIViewController alloc] init];
 78     [self setUpOneChildViewController:discover image:[UIImage imageNamed:@"tabbar_discover"] selectedImage:[UIImage imageWithOriginalName:@"tabbar_discover_selected"] title:@"发现"];
 79     discover.view.backgroundColor = [UIColor purpleColor];
 80
 81
 82     // 我
 83     UIViewController *profile = [[UIViewController alloc] init];
 84     [self setUpOneChildViewController:profile image:[UIImage imageNamed:@"tabbar_profile"] selectedImage:[UIImage imageWithOriginalName:@"tabbar_profile_selected"] title:@"我"];
 85     profile.view.backgroundColor = [UIColor lightGrayColor];
 86 }
 87
 88 #pragma mark - 添加一个子控制器
 89 - (void)setUpOneChildViewController:(UIViewController *)vc image:(UIImage *)image selectedImage:(UIImage *)selectedImage title:(NSString *)title
 90 {
 91     vc.tabBarItem.title = title;
 92     vc.tabBarItem.image = image;
 93     vc.tabBarItem.badgeValue = @"10";
 94     vc.tabBarItem.selectedImage = selectedImage;
 95
 96     [self addChildViewController:vc];
 97 }
 98
 99
100 @end
时间: 2024-10-25 00:03:08

iOS - 初级封装的相关文章

Unity3D for iOS初级教程:Part 3/3(上)

转自:http://www.cnblogs.com/alongu3d/archive/2013/06/01/3111738.html 欢迎来到第三部分,这是Unity 3D for iOS初级系列教程的最后一个部分!在这个系列的第一部分,你参观了基本的Unity工具,创建了带有一个简单角色控制机制的游戏,并且学习了如何部署你的项目到iOS上. 然后在这个系列的第二部分,你增强了你英勇的小方块的移动,并且给这个世界带来一些生命,它拥有了天空,草地和一个起伏的地形. 在第三部分,也是最后一部分,你将

ios中封装网络请求类

ios中封装网络请求类 #import "JSNetWork.h" //asiHttpRequest #import "ASIFormDataRequest.h" //xml 的解析 #import "UseXmlParser.h" //判断是否联网 #import "Reachability.h" //sbJson,判断json的解析 #import "JSON.h" @implementation JS

一些常见的iOS面试问题, 一眼就能看出iOS初级和高级工程师的区别

前言 面试题中有一些一般性的问题,通常是会问到的.面试iOS应聘者时,切入点很重要,不同的切入点会导致不同的结果,没有找到合适的切入点也无法对应聘者有一个全面的了解.所以下面的面试问题更多的是提供方向,没有固定的答案,而且可以根据应聘者的回应引出更多有意思深层次的讨论. 注意:以下问题的参考答案均为笔者所答,不代表正确,问题答案因人而异,请根据自己的实际情况回答,若认为不合理,请在评论中指出.下面所有的参考答案,都是笔者站在面试官的角度来分析的,不同的面试官也会不一样.笔者面试过一些人,一问就可

iOS 自己封装的SDK 打包与合并,新手教程!!!

前言 (1)这个时候就得说下静态库,动态库区别.           静态库:1.模块化,分工合作.2.避免少量改动经常导致大量的重复编译链接.3.也可以重用,注意不是共享使用.           动态库:1.使用动态库,可以将最终可执行文件体积缩小.2.使用动态库,多个应用程序共享内存中得同一份库文件,节省资源.3.使用动态库,可以不重新编译连接可执行程序的前提下,更新动态库文件达到更新应用程序的目的. 备注:苹果禁用动态库,即你使用了动态库,审核也是不让通过的. (2)静态库又分为:fra

IOS开发-封装数据库sqlite3之为何选择FMDB

为什么使用第三方轻量级框架FMDB? FMDB是用于进行数据存储的第三方的框架,它与SQLite与Core Data相比较,存在很多优势. FMDB是面向对象的,它以OC的方式封装了SQLite的C语言API,使用起来更加的方便,不需要过多的关心数据库操作的知识. 为什么不使用core data和SQLite? Core Data是ORM的一种体现,实现了界面化操作.使用Core Data需要用到模型数据的转化,虽然操作简单,不需要直接操作数据库,但是性能没有直接使用SQLite高.但是SQLi

ios uiview封装动画(摘录)

iOS开发UI篇—核心动画(UIView封装动画) 一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画支持 执行动画所需要的工作由UIView类自动完成,但仍要在希望执行动画时通知视图,为此需要将改变属性的代码放在[UIView beginAnimations:nil context:nil]和[UIView commitAnimations]之间 常见方法解析: + (void)setAnimat

黑马程序员--IOS学习笔记--IOS初级视频目录

1.第一天: 1.1.开发概述 1.2.IOS设备发展史 1.3.Mac OS X系统介绍 1.4.Mac OS X常见设置 1.5.Mac OS X系统操作(一) 1.6.Mac OS X系统操作(一) 1.7.Mac OS X系统操作(一) 1.8.开发环境Xcode安装.使用 1.9.IOS开发体验之按钮.界面切换 1.10.IOS开发体验之按钮.界面切换(补充) 1.11.IOS开发体验之打电话发短信 1.12.IOS开发体验之<Tom猫> 1.13.计算机程序 1.14.IOS开发基

iOS 自己封装的网络请求,json解析的类

基本上所有的APP都会涉及网络这块,不管是用AFNetWorking还是自己写的http请求,整个网络框架的搭建很重要. 楼主封装的网络请求类,包括自己写的http请求和AFNetWorking的请求,代码简单,主要是框架搭建.简单来说,就是一个请求类,一个解析类,还有若干数据类. 以下代码以公开的天气查询api为例: 1.网络请求类 我把常用的网络请求方法都封装好了,你只需要写自己的接口,传递apiName,params等参数就可以. #pragma mark ios请求方式 //ios自带的

iOS代码封装成.a文件(封装SDK)

在众多开源的大神的博客里经整理如下:(已测试ok) 一.描述一下 Build ActiveArchitecture Only设置成YES: Architectures按Xcode默认配置,arm64向前兼容: 制作.a静态库,需要要保证兼容性,包括不同iOS设备以及模拟器运行不出错,所以尽量做到最大的兼容性. ValidArchitectures设置为:armv7|armv7s|arm64|i386|x86_64 二.图文攻略 1.    打开Xcode,点击File\New\Project,选