很多APP都会涉及到搜索框,苹果也为我们提供了默认的搜索框UISearchBar。但实际项目中我们通常需要更改系统默认搜索框的样式。为了实现这一目标,我们需要先搞懂 UISearchBar 的属性及方法。在系统的掌握了这些基础的前提下才能更好的去应用它,包括修改样式、或者是模仿系统搜索框的样式自定义一个自己的搜索框等。

本文主要介绍内容分为以下三个部分:
1. UISearchBar 的属性

2. UISearchBar 的方法

3. 自定义 UISearchBar 的样式

1. UISearchBar 的属性

介绍之前先说一下 UISearchBar 的初始化方法:UISearchBar 是 UIView 的子类,它的初始化方法有三种:

  1. - (instancetype)init
  2. - (instancetype)initWithFrame:(CGRect)frame
  3. - (nullable instancetype)initWithCoder:(NSCoder *)aDecoder

这三个初始化方法是我们常见的初始化 UIView 以及它的子类的方法,比较常见,而且也不是介绍重点,所以这里不展开说明。

1.1 搜索框风格
  • 属性
  1. // 搜索框风格
  2. @property(nonatomic) UIBarStyle barStyle;

UIBarStyle 有四种枚举值,但后两种已经禁用。

  1. typedef NS_ENUM(NSInteger, UIBarStyle) {
  2. UIBarStyleDefault //白色搜索框,灰色背景
  3. UIBarStyleBlack //黑色搜索框,
  4. UIBarStyleBlackOpaque = 1, // 禁用. Use UIBarStyleBlack
  5. UIBarStyleBlackTranslucent = 2, // 禁用. Use UIBarStyleBlack and set the translucent property to YES
  6. }
  • 效果图:
 
UIBarStyleDefault 样式
 
UIBarStyleBlack样式
1.2 搜索的文本、搜索框顶部的提示信息、占位符
  • 属性
  1. // 搜索的文本
  2. @property(nullable,nonatomic,copy) NSString *text;
  3. // 搜索框顶部的提示信息
  4. @property(nullable,nonatomic,copy) NSString *prompt;
  5. // 占位符,默认nil, 若有值则在输入文本后消失
  6. @property(nullable,nonatomic,copy) NSString *placeholder;
  • 效果图:
 
prompt 和 placeholder
 
输入文本为 text 后 placeholder 消失
1.3 搜索框右侧的按钮
  • 属性
  1. // 搜索框右侧是否显示图书按钮
  2. @property(nonatomic) BOOL showsBookmarkButton;
  3. //搜索框右侧是否显示取消按钮
  4. @property(nonatomic) BOOL showsCancelButton;
  5. //搜索框右侧是否显示搜索结果按钮
  6. @property(nonatomic) BOOL showsSearchResultsButton;
  7. // 搜索结果按钮为选中状态
  8. @property(nonatomic, getter=isSearchResultsButtonSelected) BOOL searchResultsButtonSelected

以上四个属性的默认值都是 NO

  • 效果图:
 
showsBookmarkButton = YES 效果
 
showsCancelButton = YES 效果
 
showsSearchResultsButton = YES 效果
 
searchResultsButtonSelected = YES 效果,要结合showsSearchResultsButton = YES使用
1.4 风格颜色、背景颜色
  • 属性
  1. // 风格颜色,可用于修改输入框的光标颜色,取消按钮和选择栏被选中时候都会变成设置的颜色
  2. @property(null_resettable, nonatomic,strong) UIColor *tintColor;
  3. // 搜索框背景颜色
  4. @property(nullable, nonatomic,strong) UIColor *barTintColor;
  • 测试代码
  1. self.tintColor = [UIColor orangeColor]; //设置光标颜色为橘色
  2. self.barTintColor = [UIColor grayColor]; //设置搜索框背景颜色为灰色
  • 效果图:
 
tintColor 和 barTintColor
1.5 搜索框样式
  • 属性
  1. // 搜索框样式
  2. @property (nonatomic) UISearchBarStyle searchBarStyle

它有三种枚举值:

  1. typedef NS_ENUM(NSUInteger, UISearchBarStyle) {
  2. UISearchBarStyleDefault, // 默认样式,和UISearchBarStyleProminent 一样
  3. UISearchBarStyleProminent, // 显示背景,常用在my Mail, Messages and Contacts
  4. UISearchBarStyleMinimal // 不显示背景,系统自带的背景色无效,自定义的有效,常用在Calendar, Notes and Music
  5. }
  • 效果图:

     
    UISearchBarStyleMinimal 不显示背景
     
    UISearchBarStyleDefault 和 UISearchBarStyleProminent 都显示背景
1.6 搜索栏的附件选择按钮视图
  • 属性
  1. // 选择按钮试图的按钮标题
  2. @property(nullable, nonatomic,copy) NSArray<NSString *> *scopeButtonTitles ;
  3. // 选中的按钮下标值 ,默认 0. 如果超出范围则忽略
  4. @property(nonatomic) NSInteger selectedScopeButtonIndex ;
  5. // 是否显示搜索栏的附件选择按钮视图
  6. @property(nonatomic) BOOL showsScopeBar;
  • 测试代码
  1. self.placeholder = @"搜索";
  2. self.showsScopeBar = YES;
  3. self.scopeButtonTitles = @[@"One", @"Two", @"Three"];
  4. self.selectedScopeButtonIndex = 1;
  • 效果图:
 
带选择按钮视图的搜索栏
1.7 搜索框背景图片、搜索框附属分栏条的背景颜色
  • 属性
  1. // 搜索框背景图片
  2. @property(nullable, nonatomic,strong) UIImage *backgroundImage;
  3. // 搜索框附属分栏条的背景颜色
  4. @property(nullable, nonatomic,strong) UIImage *scopeBarBackgroundImage;
  • 测试代码
  1. //设置搜索框背景图片
  2. UIImage *backgroundImage = [UIImage imageNamed:@"image001"];
  3. self.backgroundImage = backgroundImage;
  4. //搜索框附属分栏条的背景颜色
  5. UIImage *scopeBarBackgroundImage = [UIImage imageNamed:@"image002"];
  6. self.scopeBarBackgroundImage = scopeBarBackgroundImage;
  • 效果图:
 
设置backgroundImage 和 scopeBarBackgroundImage
1.8 索框中文本框的背景偏移量和文本偏移量
  • 属性
  1. // 搜索框中文本框的背景偏移量
  2. @property(nonatomic) UIOffset searchFieldBackgroundPositionAdjustment;
  3. // 搜索框中文本框的文本偏移量
  4. @property(nonatomic) UIOffset searchTextPositionAdjustment;
  • 测试代码
  1. self.searchFieldBackgroundPositionAdjustment = UIOffsetMake(5, 3);
  2. self.searchTextPositionAdjustment = UIOffsetMake(10, 5);

效果图:

 
设置偏移量前后对比图
PS: UITextInputAssistantItem *inputAssistantItem 、BOOL translucent 、UIView *inputAccessoryView 经过测试这三个属性并不太清楚具体实现效果,之后会继续深入了解一下,记在这里,作为提醒,如果有谁刚好了解它们,希望能够给与帮助,非常感谢。

2. UISearchBar 的方法

2.1 设置是否动画效果的显示或隐藏取消按钮
  • 方法:
  1. // 设置是否动画效果的显示或隐藏取消按钮
  2. - (void)setShowsCancelButton:(BOOL)showsCancelButton animated:(BOOL)animated

通常在开始编辑文本时将调用该方法,让取消按钮显示出来。

  • 测试代码:
  1. -(void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
  2. NSLog(@"开始输入搜索内容");
  3. [searchBar setShowsCancelButton:YES animated:YES]; // 动画显示取消按钮
  4. }
  • 效果图:
 
setShowsCancelButton: animated:
2.2 设置 (获取) 搜索框背景图片、选择按钮视图的背景图片、文本框的背景图片
  • 方法:
  1. // 1.设置搜索框背景图片
  2. - (void)setBackgroundImage:(nullable UIImage *)backgroundImage forBarPosition:(UIBarPosition)barPosition barMetrics:(UIBarMetrics)barMetrics
  3. // 获取置搜索框背景图片
  4. - (nullable UIImage *)backgroundImageForBarPosition:(UIBarPosition)barPosition barMetrics:(UIBarMetrics)barMetrics
  5. // 2.设置选择按钮视图的背景图片
  6. - (void)setScopeBarButtonBackgroundImage:(nullable UIImage *)backgroundImage forState:(UIControlState)state
  7. // 获取选择按钮视图的背景图片
  8. - (nullable UIImage *)scopeBarButtonBackgroundImageForState:(UIControlState)state
  9. // 3.设置搜索框文本框的背景图片
  10. - (void)setSearchFieldBackgroundImage:(nullable UIImage *)backgroundImage forState:(UIControlState)state
  11. // 获取搜索框文本框的背景图片
  12. - (nullable UIImage *)searchFieldBackgroundImageForState:(UIControlState)state
  • 测试代码:
  1. self.showsScopeBar = YES;
  2. self.scopeButtonTitles = @[@"One", @"Two", @"Three"];
  3. self.selectedScopeButtonIndex = 1;
  4. // 设置搜索框背景图片
  5. [self setBackgroundImage:[UIImage imageNamed:@"image001"] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
  6. // 设置选择按钮视图的背景图片
  7. [self setScopeBarButtonBackgroundImage:[UIImage imageNamed:@"image002"] forState:UIControlStateNormal];
  8. // 设置搜索框文本框的背景图片
  9. [self setSearchFieldBackgroundImage:[UIImage imageNamed:@"image003"] forState:UIControlStateNormal];
  • 效果图:
 
设置搜索框背景图片、选择按钮视图的背景图片、文本框的背景图片

我们可以观察一下选择按钮视图的背景图片,发现这个图片只是设置在三个按钮的底部视图,而大的外面的空余背景依旧是灰色,对比1.7中使用属性UIImage *scopeBarBackgroundImage 设置的背景图片,发现使用属性设置背景图片不会有空余的灰色背景,该属性针对的是大的scopeBar, 而不是一个scopeBarButton,这一点需要注意区分。

2.3 设置(获取)搜索框的图标(包括搜索图标、清除输入的文字的图标、图书图标、搜索结果列表图标)
  • 属性
  1. // 设置搜索框的图标
  2. - (void)setImage:(nullable UIImage *)iconImage forSearchBarIcon:(UISearchBarIcon)icon state:(UIControlState)state;
  3. // 获取搜索框的图标
  4. - (nullable UIImage *)imageForSearchBarIcon:(UISearchBarIcon)icon state:(UIControlState)state;

搜索框图标 UISearchBarIcon 有四个枚举值:

  1. typedef NS_ENUM(NSInteger, UISearchBarIcon) {
  2. UISearchBarIconSearch, // 搜索框放大镜图标
  3. UISearchBarIconClear , // 搜索框右侧可用于清除输入的文字的图标x
  4. UISearchBarIconBookmark , // 搜索框右侧的图书图标
  5. UISearchBarIconResultsList , // 搜索框右侧的搜索结果列表图标
  6. };
  • 测试代码

    1. self.placeholder = @"搜索";
    2. self.showsSearchResultsButton = YES;
    3. // 设置搜索框放大镜图标
    4. UIImage *searchIcon = [UIImage imageNamed:@"searchIcon"];
    5. [self setImage:searchIcon forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal];
    6. // 设置搜索结果列表图标
    7. UIImage *resultListIcon = [UIImage imageNamed:@"arrow"];
    8. [self setImage:resultListIcon forSearchBarIcon:UISearchBarIconResultsList state:UIControlStateNormal];
  • 效果图
 
重新设置搜索框搜索图标和显示结果列表的图标

可以发现搜索图标和搜索结果列表图标已经改变,至于其他的两个图标仿照上面代码修改即可实现。

2.4 设置(获取)选择按钮视图的分割线图片、按钮上显示的标题样式
  • 方法
  1. // 设置选择按钮视图的分割线图片
  2. - (void)setScopeBarButtonDividerImage:(nullable UIImage *)dividerImage forLeftSegmentState:(UIControlState)leftState rightSegmentState:(UIControlState)rightState;
  3. // 获取选择按钮视图的分割线图片
  4. - (nullable UIImage *)scopeBarButtonDividerImageForLeftSegmentState:(UIControlState)leftState rightSegmentState:(UIControlState)rightState;
  5. // 设置选择按钮视图的标题样式
  6. - (void)setScopeBarButtonTitleTextAttributes:(nullable NSDictionary<NSString *, id> *)attributes forState:(UIControlState)state;
  7. // 获取选择按钮视图的标题样式
  8. - (nullable NSDictionary<NSString *, id> *)scopeBarButtonTitleTextAttributesForState:(UIControlState)state
  • 测试代码
  1. self.showsScopeBar = YES;
  2. self.scopeButtonTitles = @[@"One", @"Two", @"Three", @"Four"];
  3. // 设置选择按钮视图的分割线图片为一个橘色的线条
  4. [self setScopeBarButtonDividerImage:[UIImage imageNamed:@"divider"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal];
  5. // 设置选择按钮视图的标题样式为20号橘色空心的系统字体
  6. NSDictionary *attributeDic = @{NSFontAttributeName : [UIFont systemFontOfSize:20] , NSStrokeColorAttributeName : [UIColor orangeColor] , NSStrokeWidthAttributeName : @(3)};
  7. [self setScopeBarButtonTitleTextAttributes:attributeDic forState:UIControlStateNormal];
  • 效果图

     
    设置选择按钮视图的分割线图片和按钮上显示的标题样式的效果图
2.5 设置(获取)搜索框四种图标的偏移量
(评论里的小伙伴说不管怎样运行搜索图标总是在左边,测试后发现在iOS11系统上搜索图标默认在左边,而我当时写文章时没有升级模拟器为iOS11,所以非常感谢她的评论,不然自己也没注意到。总之就是如果想要更改搜索图标的位置,可以使用这个方法哦,亲测有效)
  • 方法
  1. // 设置搜索框图标的偏移量
  2. - (void)setPositionAdjustment:(UIOffset)adjustment forSearchBarIcon:(UISearchBarIcon)icon;
  3. // 获取搜索框图标的偏移量
  4. - (UIOffset)positionAdjustmentForSearchBarIcon:(UISearchBarIcon)icon;
  • 测试代码
  1. self.placeholder = @"搜索";
  2. [self setPositionAdjustment:UIOffsetMake(15, 5) forSearchBarIcon:UISearchBarIconSearch];
  • 效果图
 
设置搜索图标向有偏移15个单位,向下偏移5个单位后的效果图
2.6 UISearchBarDelegate代理方法
  • 方法
  1. // 1. 将要开始编辑文本时会调用该方法,返回 NO 将不会变成第一响应者
  2. - (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar;
  3. // 2. 开始输入文本会调用该方法
  4. - (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar;
  5. // 3. 将要结束编辑文本时会调用该方法,返回 NO 将不会释放第一响应者
  6. - (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar;
  7. // 4. 结束编辑文本时调用该方法
  8. - (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar;
  9. // 5. 文本改变会调用该方法(包含clear文本)
  10. - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText;
  11. // 6. 文字改变前会调用该方法,返回NO则不能加入新的编辑文字
  12. - (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text ;
  13. // 7. 键盘上的搜索按钮点击的会调用该方法
  14. - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar;
  15. // 8. 搜索框右侧图书按钮点击会调用该方法
  16. - (void)searchBarBookmarkButtonClicked:(UISearchBar *)searchBar ;
  17. // 9.点击取消按钮会调用该方法
  18. - (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar;
  19. // 10.搜索结果列表按钮被按下会调用该方法
  20. - (void)searchBarResultsListButtonClicked:(UISearchBar *)searchBar ;
  21. // 11. 搜索框的附属按钮视图中切换按钮会调用该方法
  22. - (void)searchBar:(UISearchBar *)searchBar selectedScopeButtonIndexDidChange:(NSInteger)selectedScope;
  • 测试代码
  1. - (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {
  2. return YES;
  3. }
  4. - (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
  5. searchBar.prompt = @"1.开始编辑文本";
  6. [searchBar setShowsCancelButton:YES animated:YES]; // 动画效果显示取消按钮
  7. }
  8. - (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
  9. return YES;
  10. }
  11. - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
  12. searchBar.prompt = @"2.在改变文本过程中。。。";
  13. }
  14. - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
  15. searchBar.prompt = @"3. 点击键盘上的搜索按钮";
  16. }
  17. - (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
  18. searchBar.prompt = @"4. 点击取消按钮";
  19. searchBar.text = @"";
  20. [self setShowsCancelButton:NO animated:YES];
  21. // 如果希望在点击取消按钮调用结束编辑方法需要让加上这句代码
  22. //[searchBar resignFirstResponder];
  23. }
  24. - (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar{
  25. return YES;
  26. }
  27. - (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar {
  28. searchBar.prompt = @"5.已经结束编辑文本";
  29. }
  • 效果图
    点击取消按钮但没有释放搜索框的第一响应者身份效果图:
 
gif1

点击取消按钮用时释放搜索框的第一响应者身份会调用结束编辑文本的方法:

 
gif2

3. 自定义 UISearchBar 的样式

在自定义UISearchBar 样式之前我们先来看一下UISearchBar的组成:

 
UISearchBar层次结构截图

根据这个截图我们可以概括为下图:

 
简单概括的UISearchBar层次结构

根据这个简单的层次结构图,我们可以更好的了解UISearchBar的组成部分,这样有助于我们更方便的进行自定义样式,下面开始自定义样式!

目标搜索框样式

首先看一下目标样式

 
目标搜索框样式.gif
实现代码

代码中添加约束和自定义颜色可参考之前写的两篇文章:约束自定义颜色

  1. // 委托
  2. - (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
  3. [searchBar setShowsCancelButton:YES animated:YES];
  4. }
  5. - (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
  6. searchBar.text = @"";
  7. [self setShowsCancelButton:NO animated:YES];
  8. [searchBar resignFirstResponder];
  9. }
  10. - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
  11. self.voiceButton.hidden = searchText.length > 0 ? YES : NO;
  12. }
  13. - (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar {
  14. self.voiceButton.hidden = NO;
  15. }
  16. // 样式设计
  17. - (void)modifyStyleByTraversal {
  18. // 修改搜索框背景图片为自定义的灰色
  19. UIColor *backgroundImageColor = [UIColor colorwithHex:0xE3DFDA];
  20. UIImage* clearImg = [self imageWithColor:backgroundImageColor andHeight:45.0];
  21. self.backgroundImage = clearImg;
  22. // 修改搜索框光标颜色
  23. self.tintColor = [UIColor P2Color];
  24. // 修改搜索框的搜索图标
  25. [self setImage:[UIImage imageNamed:@"searchIcon"] forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal];
  26. for (UIView *view in self.subviews.lastObject.subviews) {
  27. if([view isKindOfClass:NSClassFromString(@"UISearchBarTextField")]) {
  28. UITextField *textField = (UITextField *)view;
  29. //添加话筒按钮
  30. [self addVoiceButton:textField];
  31. //设置输入框的背景颜色
  32. textField.clipsToBounds = YES;
  33. textField.backgroundColor = [UIColor P1Color];
  34. //设置输入框边框的圆角以及颜色
  35. textField.layer.cornerRadius = 10.0f;
  36. textField.layer.borderColor = [UIColor P2Color].CGColor;
  37. textField.layer.borderWidth = 1;
  38. //设置输入字体颜色
  39. textField.textColor = [UIColor P2Color];
  40. //设置默认文字颜色
  41. textField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@" 搜索" attributes:@{NSForegroundColorAttributeName:[UIColor P2Color]}];
  42. }
  43. if ([view isKindOfClass:NSClassFromString(@"UINavigationButton")]) {
  44. UIButton *cancel = (UIButton *)view;
  45. [cancel setTitle:@"取消" forState:UIControlStateNormal];
  46. [cancel setTitleColor:[UIColor P2Color] forState:UIControlStateNormal];
  47. }
  48. }
  49. }
  50. // 画指定高度和颜色的图片
  51. - (UIImage*) imageWithColor:(UIColor*)color andHeight:(CGFloat)height {
  52. CGRect rect = CGRectMake(0.0, 0.0, 1.0, height);
  53. UIGraphicsBeginImageContext(rect.size);
  54. CGContextRef context = UIGraphicsGetCurrentContext();
  55. CGContextSetFillColorWithColor(context, [color CGColor]);
  56. CGContextFillRect(context, rect);
  57. UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
  58. UIGraphicsEndImageContext();
  59. return image;
  60. }
  61. // 添加话筒按钮
  62. - (void)addVoiceButton:(UIView *)view {
  63. if (!self.voiceButton) {
  64. self.voiceButton = [UIButton buttonWithType:UIButtonTypeCustom];
  65. }
  66. [self.voiceButton setImage:[UIImage imageNamed:@"voice"] forState:UIControlStateNormal];
  67. [self.voiceButton addTarget:self action:@selector(say) forControlEvents:UIControlEventTouchUpInside];
  68. [view addSubview:self.voiceButton];
  69. self.voiceButton.translatesAutoresizingMaskIntoConstraints = NO;
  70. [self.voiceButton addWidthConstraint:15];
  71. [self.voiceButton addHeightConstraint:15];
  72. [self.voiceButton addTopConstraintToView:view constant:8];
  73. [self.voiceButton addTrailingConstraintToView:view constant:- 15];
  74. }
  75. // 点击话筒触发该方法
  76. - (void)say {
  77. // self.prompt = @"在讲话哦!";
  78. }

补充:修改UISearchBar宽高

UISearchBar 有默认的布局样式,我们想要修改他的宽高,需要重写layoutSubviews 方法。然后在这个方法里面修改UISearchBarTextField的宽高。

实现代码
  1. - (void)layoutSubviews {
  2. [super layoutSubviews];
  3. UITextField *textField = [self valueForKey:@"searchBarTextField"];
  4. if (textField) {
  5. textField.frame = CGRectMake(50, 10, self.bounds.size.width - 100, 35);
  6. }
  7. }
  • 效果图:

     
    自定义搜索框的宽高
关注

作者:遇见0620

iOS开发UI篇 -- UISearchBar 属性、方法详解及应用(自定义搜索框样式)的更多相关文章

  1. iOS开发UI篇—transframe属性(形变)

    iOS开发UI篇—transframe属性(形变) 1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两 ...

  2. iOS开发UI篇—transframe属性(形变)

    iOS开发UI篇—transframe属性(形变) 1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两 ...

  3. iOS开发——实用篇&KVO与KVC详解

    KVO与KVC详解 由于ObjC主要基于Smalltalk进行设计,因此它有很多类似于Ruby.Python的动态特性,例如动态类型.动态加载.动态绑定等.今天我们着重介绍ObjC中的键值编码(KVC ...

  4. ios开发UI篇—UIScrollView属性及其代理方法

    一.UIScrollView是什么? 1.UIScrollView是滚动的view,UIView本身不能滚动,子类UIScrollview拓展了滚动方面的功能. 2.UIScrollView是所有滚动 ...

  5. iOS开发支付篇——内购(IAP)详解

    1 <em>内购所需要的资料整理总结,史上最完整的,哈哈哈哈哈哈</em> 思维导图 重点总结: 1 2 3 4 5 6 7 8 9 10 11 12 13 1.获取内购列表( ...

  6. iOS开发基础篇-transform属性

    一. transform 属性 在OC中,通过 transform 属性可以修改对象的平移.缩放比例和旋转角度. 1)创建“基于控件初始位置”的形变  CGAffineTransformMakeRot ...

  7. IOS开发UI篇—导航控制器属性和基本使用

    IOS开发UI篇—导航控制器属性和基本使用 一.导航控制器的一些属性和基本使用 1.把子控制器添加到导航控制器中的四种方法 (1) 1.创建一个导航控制器 UINavigationController ...

  8. iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist)

    iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist) 一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存 ...

  9. iOS开发UI篇—CAlayer层的属性

    iOS开发UI篇—CAlayer层的属性 一.position和anchorPoint 1.简单介绍 CALayer有2个非常重要的属性:position和anchorPoint @property ...

随机推荐

  1. 关于AJAX的一些事

    在JQ中运用AJAX的操作是很舒服的一件事,一直以来我对他都有个错误的认识,直到遇见了问题才把他研究个透彻. 下面贴出两种AJAX的写法,当然都是正确的. 其一: $.ajax({ type: 'po ...

  2. Java多线程学习笔记(三)同步和异步

    首先是一段代码: public class HasSelfPrivateNum { public void addI(String username){ try { int num=0; if(use ...

  3. 2.bootstrap安装

    1.下载 您可以从 http://getbootstrap.com/ 上下载 Bootstrap 的最新版本(或者 http://www.bootcss.com/  中文网) Download Boo ...

  4. vs2015生成的mvc模板结构说明

  5. SVN图标不显示的解决几种方式

    系统安装的Tortoise SVN,不知道是不是安装了其他软件的缘故,造成SVN客户端功能可以正常使用,就是文件夹或文件的左下角不显示图标.故上网查找解决方法: 方法一: 升级到最新版本,基本是没用的 ...

  6. svchost.exe占网速的解决办法

    1.win+R,然后输入gpedit.msc打开本地组策略编辑器. 2.打开window设置--安全设置--本地策略--安全选项--找到 用户帐户控制: 以管理员批准模式运行所有管理员 和 用户帐户控 ...

  7. 沉淀再出发:用python画各种图表

    沉淀再出发:用python画各种图表 一.前言 最近需要用python来做一些统计和画图,因此做一些笔记. 二.python画各种图表 2.1.使用turtle来画图 import turtle as ...

  8. December 26th 2016 Week 53rd Monday

    Better to light one candle than to curse the darkness. 与其诅咒黑暗,不如燃起蜡烛. If the world is so cruel, I wo ...

  9. HTTP协议图--HTTP 报文实体

    1. HTTP 报文实体概述   HTTP 报文结构 大家请仔细看看上面示例中,各个组成部分对应的内容. 接着,我们来看看报文和实体的概念.如果把 HTTP 报文想象成因特网货运系统中的箱子,那么 H ...

  10. 微服务、rest/restful、springmvc、http简要梳理

    微服务简介 微服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持微服务.一个微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个的应用程序.简而言之,微服务架构是 ...