简单字体浏览器应用开发指南
立即解锁
发布时间: 2025-08-20 01:38:17 阅读量: 20 订阅数: 48 AIGC 


iOS 7开发入门:探索iOS SDK
### 简单字体浏览器应用开发指南
#### 1. 应用概述
我们要构建的应用将展示如何完成与显示数据层次结构相关的常见任务。应用启动时,会呈现iOS系统包含的所有字体家族列表。字体家族是一组密切相关的字体,例如Helvetica字体家族就包含Helvetica、Helvetica - Bold、Helvetic - Oblique等变体。
在顶层视图中选择任何一行,都会将一个视图控制器压入导航控制器的栈中。每行右侧的图标称为辅助图标,其中灰色箭头这种特定的辅助图标称为披露指示器,它提示用户点击该行会深入到另一个表格视图。
#### 2. 子控制器介绍
在构建字体应用之前,先了解一下各个子控制器显示的视图:
- **字体列表控制器**:点击图9 - 2中表格的任何一行,会弹出图9 - 3所示的子视图。每行右侧的辅助图标是详细披露按钮,与披露指示器不同,它是用户可以点击的控件。用户选择行和点击按钮会触发不同的操作,点击按钮可查看和编辑当前行的详细信息,而右箭头提示点击行的其他位置可进行更深层次的导航。
- **字体大小视图控制器**:点击图9 - 3中表格的任何一行,会弹出图9 - 4所示的子视图。该视图比字体列表视图控制器更深一层,会显示所选字体的多种大小,每行一种。
- **字体信息视图控制器**:这是应用的最后一个子控制器,也是唯一不是表格视图的控制器,如图9 - 5所示。点击图9 - 2中字体列表控制器里任何一行的信息图标时会出现此视图。用户可拖动滑块调整显示字体的大小,还能通过开关指定该字体是否列为收藏。若有字体被设为收藏,它们会在根视图控制器的单独组中显示。
以下是披露指示器和详细披露按钮的使用场景总结:
| 使用场景 | 操作建议 |
| ---- | ---- |
| 行点击仅显示该行详细信息 | 不使用辅助图标 |
| 行点击显示更多项目列表(非详细视图) | 使用披露指示器(右箭头) |
| 行为用户提供两种选择 | 使用详细披露指示器或详细按钮 |
#### 3. 应用骨架搭建
虽然Xcode提供了创建基于导航应用的模板,但我们将从头开始构建基于导航的应用,以了解各部分的组合方式。具体步骤如下:
1. 在Xcode中,按`⌘⇧N`创建新项目,从iOS应用模板列表中选择“Empty Application”,然后点击“Next”。
2. 设置产品名称为“Fonts”,组织名称为“Apress”,公司标识符为“com.apress”,类前缀为“BID”,确保不勾选“Use Core Data”,设备设置为“iPhone”,点击“Next”并选择项目保存位置。
此时项目只有一个应用委托,没有视图控制器和导航控制器。要使应用运行,需要添加导航控制器(包含导航栏)以及一系列视图和视图控制器。
#### 4. 创建故事板
应用的图形用户界面(GUI)将包含在一个故事板中,这是管理预定视图控制器层次结构的最佳、最紧凑的方式。具体操作如下:
1. 按`⌘N`打开文件创建助手,从用户界面部分选择“Storyboard”。
2. 在下一屏幕将设备系列设置为“iPhone”,再下一个屏幕将文件命名为“Main.storyboard”并保存到项目中。
3. 确保应用从该故事板加载GUI配置,在项目导航器中选择顶层的“Fonts”项,在编辑区域左侧的“Targets”部分选择“Fonts”项,在“General”标签下的“Deployment Info”部分找到“Main Interface”组合框,选择“Main.storyboard”。
4. 移除应用委托中在没有故事板或nib文件时设置基本GUI的代码,选择“BIDAppDelegate.m”,删除`application:didFinishLaunchingWithOptions:`方法中除最后一行`return YES;`之外的所有代码。
#### 5. 设置导航控制器
现在需要为应用创建基本的导航结构,核心是`UINavigationController`和`UITableViewController`。操作步骤如下:
1. 选择“Main.storyboard”,使用对象库搜索“UINavigationController”,将其拖到编辑区域,会得到两个场景,左侧是`UINavigationController`,它连接到包含`UITableViewController`的第二个场景。
2. 点击表格的标题“Root View Controller”,打开属性检查器,将标题设置为“Fonts”。
配置应用从故事板加载初始场景后,会得到导航控制器创建的视图,它由屏幕顶部的导航栏(通常包含标题和返回按钮)和当前视图控制器要显示的内容组成。此时应用骨架基本完成,保存所有文件,构建并运行应用,若一切正常,会出现标题为“Fonts”的导航栏,但表格视图暂无内容显示。
#### 6. 管理收藏字体
在应用中,我们让用户维护收藏字体列表,为此创建一个新类`BIDFavoritesList`来管理收藏字体数组并将其存储在用户偏好设置中。具体步骤如下:
1. 在项目导航器中选择“Fonts”文件夹,按`⌘N`打开新文件助手,在左窗格选择“Cocoa Touch”,选择“Objective - C class”,点击“Next”。
2. 选择`NSObject`作为父类,将新类命名为“BIDFavoritesList”,创建文件后,选择“BIDFavoritesList.h”并添加以下代码:
```objc
#import <Foundation/Foundation.h>
@interface BIDFavoritesList : NSObject
+ (instancetype)sharedFavoritesList;
- (NSArray *)favorites;
- (void)addFavorite:(id)item;
- (void)removeFavorite:(id)item;
@end
```
上述代码声明了新类的API,其中`sharedFavoritesList`是工厂方法,返回该类的单例实例。`instancetype`是Objective - C的新特性,用于提高类型安全性。
接下来,选择“BIDFavoritesList.m”并实现该类:
```objc
#import "BIDFavoritesList.h"
@interface BIDFavoritesList ()
@property (strong, nonatomic) NSMutableArray *favorites;
@end
+ (instancetype)sharedFavoritesList {
static BIDFavoritesList *shared = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
shared = [[self alloc] init];
});
return shared;
}
- (instancetype)init {
self = [super init];
if (self) {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *storedFavorites = [defaults objectForKey:@"favorites"];
if (storedFavorites) {
self.favorites = [storedFavorites mutableCopy];
} else {
self.favorites = [NSMutableArray array];
}
}
return self;
}
- (void)addFavorite:(id)item {
[_favorites insertObject:item atIndex:0];
[self saveFavorites];
}
- (void)removeFavorite:(id)item {
[_favorites removeObject:item];
[self saveFavorites];
}
- (void)saveFavorites {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:self.favorites forKey:@"favorites"];
[defaults synchronize];
}
```
`addFavorite:`和`removeFavorite:`方法分别用于添加和移除收藏字体,并调用`saveFavorites`方法将更改保存到用户偏好设置中。这里访问数组时使用`_favorites`而不是`self.favorites`,是为了避免编译器将其解析为不可变数组。
#### 7. 创建根视图控制器
现在开始创建第一个视图控制器。使用`UIFont`类获取字体家族列表,并使用这些字体家族的名称填充每行,同时用字体本身显示字体名称,使每行包含字体家族的小预览。具体步骤如下:
1. 在项目导航器中选择“Fonts”文件夹,按`⌘N`打开新文件助手,在左窗格选择“Cocoa Touch”,选择“Objective - C class”,点击“Next”。
2. 选择`UITableViewController`作为父类,将新类命名为“BIDRootViewController”,点击“Next”,再点击“Create”创建新类。
3. 选择“BIDRootViewController.m”并添加以下代码:
```objc
#import "BIDRootViewController.h"
#import "BIDFavoritesList.h"
@interface BIDRootVi
```
0
0
复制全文
相关推荐






