【iOS学习笔记】常用代码

1,iOS设置UITableView不显示多余的空Cell

self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

2,iOS UIWebView高度大小自适应

- (void)webViewDidFinishLoad:(UIWebView *)webView     //网页加载完成的时候调用

    CGRect frame = webView.frame;

    CGSize fittingSize = [webView sizeThatFits:CGSizeZero];

    frame.size = fittingSize;

    webView.frame = frame;

}

3,设置UITableViewCell的选中背景颜色和选中字体颜色的方法

//设置UITableViewCell的选中背景颜色的方法

    UIView *view = [[UIView alloc]init];

    view.backgroundColor=[UIColor redColor];

    cell.selectedBackgroundView=view;

//设置UITableViewCell的选中字体颜色的方法:

cell.selectedTextColor=[UIColor blackColor];//默认显示为白色

4,iOS设置UITableViewCell的背景色透明

//设置UIColor为clearColor:

cell.backgroundColor=[UIColor clearColor];

//或者,设置颜色透明度为0:

cell.backgroundColor = [UIColor colorWithWhite:0.0f alpha:0.0f];

5,iOS跳转界面时隐藏tabBar的方法

//1.设置self.tabBarController.tabBar.hidden=YES;

    

self.tabBarController.tabBar.hidden=YES;

//2.如果在push跳转时需要隐藏tabBar,设置self.hidesBottomBarWhenPushed=YES;

    self.hidesBottomBarWhenPushed=YES;

    NextViewController *next=[[NextViewController alloc]init];

    [self.navigationController pushViewController:next animated:YES];

    self.hidesBottomBarWhenPushed=NO;

//并在push后设置self.hidesBottomBarWhenPushed=NO;

//这样back回来的时候,tabBar会恢复正常显示。

6,在iOS开发中,设置tabBarItem.image图片渲染模式 imageWithRenderingMode属性为UIImageRenderingModeAlwaysOriginal ,即可使图片显示原始状态

self.tabBarItem.image=[[UIImage imageNamed:images[i]] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

7,使用[NSURL URLWithString:urlString]生成URL对象时,如果含有中文字符,iOS客户端不能正确进行网络请求

NSString* encodedString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

8,UIWebview加载数据和高度自适应

当url地址中包含有中文字符或其他非标准的url字符时,需要对该url地址进行编码。NSString提供编码和解码方法:

编码:stringByAddingPercentEscapesUsingEncoding


1

2

3

NSString *urlString=[NSString stringWithFormat:@"http://www.xxxx.com/?param=%@",@"中文"];

urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

解码:stringByReplacingPercentEscapesUsingEncoding


1

NSString *urlStr = [@"xxx" stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

UIWebview加载数据的三种方法

1>- (void)loadRequest:(NSURLRequest *)request;


1

2

3

    NSURL *url = [NSURL URLWithString:urlString];

    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    [self.webView loadRequest:request];

直接加载url地址。

2>- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL;

如果获取到的是HTML字符串,可以用这个方法加载。

3>- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName baseURL:(NSURL *)baseURL;


1

2

3

    NSURL *url = [NSURL URLWithString:urlString];

    NSData *data=[NSData dataWithContentsOfURL:url];

    [self.webView loadData:data MIMEType:@"text/html" textEncodingName:@"GBK" baseURL:nil];

编码格式有GB2312、GBK、UTF-8等许多种,当url地址的编码格式比较特殊时,可以用这个方法加载。

UIWebview高度自适应

1>实现下面的事件方法能使WebView大小高度自适应:

遵守协议UIWebViewDelegate,设置代理self.webView.delegate=self;

实现- (void)webViewDidFinishLoad:(UIWebView *)webView事件方法


1

2

3

4

5

6

7

- (void)webViewDidFinishLoad:(UIWebView *)webView     //网页加载完成的时候调用

{  

    CGRect frame = webView.frame;

    CGSize fittingSize = [webView sizeThatFits:CGSizeZero];

    frame.size = fittingSize;

    webView.frame = frame;

}

此方法得到的webView自适应的高度是固定的,如果显示的HTML的高度超过webView的高度,则以屏幕滚动的方式显示。

2>如果想让webView的高度等于显示的HTML的实际高度,即显示的HTML有多高,webVIew的高度就有多高,则使用以下方法


1

2

3

4

5

- (void)webViewDidFinishLoad:(UIWebView *)webView

{

    NSInteger height = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"] integerValue];

    self.webView.frame=CGRectMake(0, 0, self.view.frame.size.width,height);

}

stringByEvaluatingJavaScriptFromString可以实现UIWebView与JavaScript之间的交互,很方便的操作UIWebview中的页面元素。

虽然这个方法能使webView高度为显示的HTML实际高度,但效果并不是太好,当高度超出屏幕时,无法滚动下拉。

3>若要在webVIew的高度为实际HTML的高度的情况下实现滚动,可综合两种方法,将webView放置于一个合适大小的scrollView上,即可实现:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

- (void)webViewDidFinishLoad:(UIWebView *)webView

{

    CGRect frame = webView.frame;

    CGSize fittingSize = [webView sizeThatFits:CGSizeZero];

    frame.size = fittingSize;

    webView.frame = frame;

    NSInteger height = [[webView stringByEvaluatingJavaScriptFromString:

    @"document.body.scrollHeight"] integerValue];

    

    self.scrollView.contentSize=CGSizeMake(self.view.frame.size.width, height);

    [self.scrollView addSubview:self.webView];

}

另,以下三段代码效果基本相同:

[webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"];

[webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"];

[webView stringByEvaluatingJavaScriptFromString:@"document.body.clientHeight"];

时间: 2024-10-12 02:51:20

【iOS学习笔记】常用代码的相关文章

iOS: 学习笔记, 用代码驱动自动布局实例

iOS自动布局是设置iOS界面的利器. 本实例展示了如何使用自动布局语言设置水平布局, 垂直布局 1. 创建空白iOS项目 2. 添加一个控制器类, 修改YYAppDelegate.m文件 #import "YYAppDelegate.h" #import "YYViewController.h" @implementation YYAppDelegate - (BOOL)application:(UIApplication *)application didFin

iOS: 学习笔记, 用代码驱动自动布局实例(swift)

iOS自动布局是设置iOS界面的利器.本实例展示了如何使用自动布局语言设置水平布局, 垂直布局1. 创建空白iOS项目(swift)2. 添加一个控制器类, 修改YYAppDelegate.swift文件 @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(application: UIApplication, didFi

iOS 开发笔记-常用代码片断

常用代码片断,只为了便于记忆 日期格式转换 // 设置数据模型的时间 NSDate *now = [NSDate date]; NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; fmt.dateFormat = @"HH:mm"; msg.time = [fmt stringFromDate:now]; // fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss"; // 结果:20

iOS学习笔记20-纯代码实现页面跳转以微博页面为栗子

首先上预览图 主要的实现逻辑在这里

iOS学习笔记20-地图(二)MapKit框架

一.地图开发介绍 从iOS6.0开始地图数据不再由谷歌驱动,而是改用自家地图,当然在国内它的数据是由高德地图提供的. 在iOS中进行地图开发主要有三种方式: 利用MapKit框架进行地图开发,利用这种方式可以对地图进行精准的控制 调用苹果官方自带的地图应用,主要用于一些简单的地图应用,无法精确控制 使用第三方地图开发SDK库 用得最多的还是MapKit,所以这节就只讲MapKit的使用. 二.MapKit核心类 MapKit的核心类为地图展示控件MKMapView,以下是常用的属性.对象方法以及

iOS学习笔记22-推送通知

一.推送通知 推送通知就是向用户推送一条信息来通知用户某件事件,可以在应用退到后台后,或者关闭后,能够通过推送一条消息通知用户某件事情,比如版本更新等等. 推送通知的常用应用场景: 一些任务管理APP,会到任务时间即将到达时,通知你该做任务了. 健身APP定时提醒你应该健身了. 买过电影票,提前半个小时通知你,电影即将开场. 当你QQ或微信收到信息时,即使退到后台,也可以收到信息通知你. 电商APP,推送一条消息通知我们有新品上架等等. 推送通知的常用展示样式: 屏幕顶部显示一块横幅 在锁屏界面

iOS学习笔记—— UItableView 控件的简单使用

UITableView 可以说是iOS开发中最常用的控件,除了游戏之外,几乎所有的应用中独会出现他的身影. 使用UITableView控件需要遵守两种协议 UITableViewDelegate和 UITableViewDataSource. 常用方法如下: 1.返回(每个分区)表单元个数(行数) - (NSInteger) tableView: (UItableView *) tableVIew numberOfRowsInSection: (NSInteger)section 2.返回表单元

iOS学习笔记13-网络(二)NSURLSession

在2013年WWDC上苹果揭开了NSURLSession的面纱,将它作为NSURLConnection的继任者.现在使用最广泛的第三方网络框架:AFNetworking.SDWebImage等等都使用了NSURLSession.作为iOS开发人员,应该紧随苹果的步伐,不断的学习,无论是软件的更新.系统的更新.API的更新,而不能墨守成规. 相比较NSURLConnection,NSURLSession提供了 配置会话缓存.协议.cookie和证书能力,这使得网络架构和应用程序可以独立工作.互不干

iOS学习笔记(十六)——数据库操作(使用FMDB)

iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepersistentobjects等,FMDB (https://github.com/ccgus/fmdb) 是一款简洁.易用的封装库,这一篇文章简单介绍下FMDB的使用. 在FMDB下载文件后,工程中必须导入如下文件,并使用 libsqlite3.dylib 依赖包. FMDB同时兼容ARC和非ARC工

IOS学习笔记 -- Modal和Quartz2D

一. Modal1.Modal的默认效果:新控制器从屏幕的最底部往上钻,直到盖住之前的控制器为止;Modal只是改变了View的现实,没有改变rootViewController 2.常用方法1>.以Modal的形式展示控制器- (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion2>.关