//
// RootViewController.h
// Homework_163News
//
// Created by lanouhn on 14-8-30.
// Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface RootViewController : UIViewController
@property (nonatomic, retain) NSMutableArray *titles;
@property (nonatomic, retain) NSMutableArray *labels;
@end
//
// RootViewController.m
// Homework_163News
//
// Created by lanouhn on 14-8-30.
// Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved.
//
#import "RootViewController.h"
#import "NewsView.h"
@interface RootViewController ()<UIScrollViewDelegate>
{
NSMutableArray *_images;
NSUInteger _imageCount;
BOOL _isOrder;
}
@end
@implementation RootViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
_isOrder = YES;
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(changePage) userInfo:nil repeats:YES];
self.titles = [NSMutableArray arrayWithObjects:@"头条", @"世界杯", @"推荐", @"娱乐", @"体育", @"财经", nil];
self.labels = [NSMutableArray arrayWithObjects:@"科技", @"时尚", @"汽车", @"房产", @"轻松一刻", @"游戏", @"CBA", @"手机", @"数码", @"原创", @"精选", @"家居", nil];
_images = [NSMutableArray array];
for (int i = 0; i < 6; i++) {
UIImage *image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"v6_guide_%d", i + 1]ofType:@"png"]];
[_images addObject:image];
}
_imageCount = _images.count;
}
return self;
}
- (void)loadView
{
NewsView *newsView = [[NewsView alloc] initWithFrame:[UIScreen mainScreen].bounds titles:self.titles images:_images labels:self.labels];
newsView.backgroundColor = [UIColor whiteColor];
self.view = newsView;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
UIScrollView *titleScrollView = (UIScrollView *)[self.view viewWithTag:100];
titleScrollView.delegate = self;
// for (int i = 0; i < _titleCount; i++) {
// UIButton *title = (UIButton *)[self.view viewWithTag:200 + i];
// [title addTarget:self action:@selector(showLabel:) forControlEvents:UIControlEventTouchUpInside];
// }
NewsView *newsView = (NewsView *)self.view;
newsView.imageView.scrollView.delegate = self;
[newsView.imageView.pageControl addTarget:self action:@selector(handlePageControl:) forControlEvents:UIControlEventValueChanged];
for (int i = 0; i < self.labels.count / 4; i++) {
for (int j = 0; j < 4; j++) {
FlagButton *label = (FlagButton *)[self.view viewWithTag:600 + 4 * i + j];
[label addTarget:self action:@selector(addLabel:) forControlEvents:UIControlEventTouchUpInside];
}
}
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
UIScrollView *imageScrollView = (UIScrollView *)[self.view viewWithTag:400];
UIPageControl *pageControl = (UIPageControl *)[self.view viewWithTag:500];
int currentPage = imageScrollView.contentOffset.x / 320;
if (currentPage == 0) {
// [imageScrollView scrollRectToVisible:CGRectMake(320 * _imageCount, 0, 320, imageScrollView.frame.size.height) animated:NO];
[imageScrollView setContentOffset:CGPointMake(320 * _imageCount, 0) animated:NO];
pageControl.currentPage = _imageCount - 1;
} else if (currentPage == _imageCount + 1) {
// [imageScrollView scrollRectToVisible:CGRectMake(320, 0, 320, imageScrollView.frame.size.height) animated:NO];
[imageScrollView setContentOffset:CGPointMake(320, 0) animated:NO];
pageControl.currentPage = 0;
} else {
pageControl.currentPage = currentPage - 1;
}
}
- (void)handlePageControl:(UIPageControl *)pageControl
{
NSLog(@"%d", pageControl.currentPage);
UIScrollView *imageScrollView = (UIScrollView *)[self.view viewWithTag:400];
// [imageScrollView scrollRectToVisible:CGRectMake(320 * (pageControl.currentPage + 1),0,320,imageScrollView.frame.size.height) animated:NO];
[imageScrollView setContentOffset:CGPointMake(320 * (pageControl.currentPage + 1), 0) animated:YES];
}
- (void)changePage
{
//单序版
/*
NewsView *newsView = (NewsView *)self.view;
int page = newsView.imageView.pageControl.currentPage;
page++;
page = page > _imageCount - 1 ? 0 : page;
newsView.imageView.pageControl.currentPage = page;
// [newsView.imageView.scrollView scrollRectToVisible:CGRectMake(320 * (page + 1), 0, 320, newsView.imageView.scrollView.frame.size.height) animated:NO];
if (page) {
[newsView.imageView.scrollView setContentOffset:CGPointMake(320 * (page + 1), 0) animated:YES];
} else {
[newsView.imageView.scrollView setContentOffset:CGPointMake(320 * (page + 1), 0) animated:NO];
}
*/
//双序版
NewsView *newsView = (NewsView *)self.view;
int page = newsView.imageView.pageControl.currentPage;
if (_isOrder) {
page++;
page = page > _imageCount - 1 ? 0 : page;
if (!page) {
_isOrder = NO;
page = _imageCount - 2;
}
} else {
page--;
page = page < 0 ? 0 : page;
if (!page) {
_isOrder = YES;
page = 0;
}
}
newsView.imageView.pageControl.currentPage = page;
[newsView.imageView.scrollView setContentOffset:CGPointMake(320 * (page + 1), 0) animated:YES];
}
- (void)addLabel:(FlagButton *)btn
{
NSLog(@"%@", btn.currentTitle);
NewsView *newsView = (NewsView *)self.view;
[newsView.titleScrollView removeFromSuperview];
if (btn.flag) {
[self.titles addObject:btn.currentTitle];
[newsView setupTitleScrollView:self.titles];
btn.flag = NO;
} else {
[self.titles removeObject:btn.currentTitle];
[newsView setupTitleScrollView:self.titles];
btn.flag = YES;
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
if (!self.view.window && [self isViewLoaded]) {
self.view = nil;
}
}
- (void)dealloc
{
self.titles = nil;
self.labels = nil;
[super dealloc];
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
@end
//
// NewsView.h
// Homework_163News
//
// Created by lanouhn on 14-8-30.
// Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "LoopView.h"
#import "FlagButton.h"
@interface NewsView : UIView
@property (nonatomic, retain) NSMutableArray *labels;
@property (nonatomic, retain) NSMutableArray *titles;
@property (nonatomic, retain) LoopView *imageView;
@property (nonatomic, retain) UIScrollView *titleScrollView;
@property (nonatomic, retain) FlagButton *aLabel;
- (void)setupTitleScrollView:(NSMutableArray *)titles;
- (id)initWithFrame:(CGRect)frame titles:(NSMutableArray *)titles images:(NSMutableArray *)images labels:(NSMutableArray *)labels;
@end
//
// NewsView.m
// Homework_163News
//
// Created by lanouhn on 14-8-30.
// Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved.
//
#import "NewsView.h"
@interface NewsView ()
{
NSMutableArray *_images;
NSUInteger _titlesCount;
NSUInteger _imagesCount;
NSUInteger _labelsCount;
}
@end
@implementation NewsView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
[self setupRedView];
[self setupTitleScrollView:self.titles];
[self setupImageView];
[self setupLabelView];
}
return self;
}
- (id)initWithFrame:(CGRect)frame titles:(NSMutableArray *)titles images:(NSMutableArray *)images labels:(NSMutableArray *)labels
{
self.titles = titles;
_images = images;
self.labels = labels;
_imagesCount = images.count;
_labelsCount = labels.count;
[self initWithFrame:frame];
return self;
}
- (void)setupRedView
{
UIView *redView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 60)];
redView.backgroundColor = [UIColor colorWithRed:1.0 green:0.1 blue:0 alpha:0.5];
[self addSubview:redView];
[redView release];
UILabel *topical = [[UILabel alloc] initWithFrame:CGRectMake(130, 20, 70, 30)];
topical.text = @"网易新闻";
[redView addSubview:topical];
[topical release];
UIButton *add = [UIButton buttonWithType:UIButtonTypeSystem];
add.frame = CGRectMake(280, 28, 25, 25);
[add setTitle:@"+" forState:UIControlStateNormal];
[add setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
add.titleLabel.font = [UIFont systemFontOfSize:40];
[redView addSubview:add];
[add release];
}
- (void)setupTitleScrollView:(NSMutableArray *)titles
{
self.titles = titles;
_titlesCount = titles.count;
// int width = (320 - 5 * (_titlesCount + 1)) / _titlesCount;
int width = 47;
self.titleScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 60, 320, 40)];
_titleScrollView.backgroundColor = [UIColor colorWithRed:0.6 green:0.1 blue:0.0 alpha:0.2];
_titleScrollView.userInteractionEnabled = YES;
_titleScrollView.showsHorizontalScrollIndicator = NO;
_titleScrollView.tag = 100;
_titleScrollView.contentSize = CGSizeMake(320 + _titlesCount * width, _titleScrollView.bounds.size.height);
_titleScrollView.pagingEnabled = YES;
[self addSubview:_titleScrollView];
[_titleScrollView release];
int x = 5;
for (int i = 0; i < _titlesCount; i++) {
UIButton *title = [UIButton buttonWithType:UIButtonTypeSystem];
title.frame = CGRectMake(x, 5, width, 30);
UIView *line = [[UIView alloc] initWithFrame:CGRectMake(x, title.frame.origin.y + title.frame.size.height, width, 2)];
title.userInteractionEnabled = YES;
title.tag = 200 + i;
line.tag = 300 + i;
title.titleLabel.font = [UIFont systemFontOfSize:15];
[title setTitle:self.titles[i] forState:UIControlStateNormal];
[title setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
x += width + 5;
[title addTarget:self action:@selector(showLabel:) forControlEvents:UIControlEventTouchUpInside];
[self.titleScrollView addSubview:title];
[self.titleScrollView addSubview:line];
[line release];
}
}
- (void)showLabel:(UIButton *)btn
{
UILabel *line = (UILabel *)[self viewWithTag:btn.tag + 100];
for (int i = 0; i < self.titles.count; i++) {
UILabel *otherLine = (UILabel *)[self viewWithTag:300 + i];
otherLine.backgroundColor = [UIColor clearColor];
}
line.backgroundColor = [UIColor redColor];
}
- (void)setupImageView
{
self.imageView = [[LoopView alloc] initWithFrame:CGRectMake(0, 100, 320, 280) images:_images];
[self addSubview:_imageView];
[_imageView release];
}
- (void)setupLabelView
{
UILabel *addLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 380, 320, 50)];
addLabel.backgroundColor = [UIColor colorWithRed:0.6 green:0.1 blue:0.0 alpha:0.2];
addLabel.text = @"添加标签";
[self addSubview:addLabel];
[addLabel release];
for (int i = 0; i < _labelsCount / 4; i++) {
for (int j = 0; j < 4; j++) {
self.aLabel = [FlagButton buttonWithType:UIButtonTypeSystem];
_aLabel.flag = YES;
_aLabel.frame = CGRectMake(5 + j * 80, 450 + i * 40, 73, 20);
_aLabel.backgroundColor = [UIColor lightGrayColor];
_aLabel.tag = 600 + 4 * i + j;
_aLabel.layer.cornerRadius = 2;
[_aLabel setTitle:self.labels[4 * i + j] forState:UIControlStateNormal];
[_aLabel setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
_aLabel.titleLabel.font = [UIFont systemFontOfSize:18];
[self addSubview:_aLabel];
}
}
}
- (void)dealloc
{
self.aLabel = nil;
self.labels = nil;
self.titles = nil;
self.imageView = nil;
self.titleScrollView = nil;
[super dealloc];
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
// Drawing code
}
*/
@end
//
// LoopView.h
// Test_LoopScrollView
//
// Created by lanouhn on 14-8-30.
// Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface LoopView : UIView
@property (nonatomic, retain) UIScrollView *scrollView;
@property (nonatomic, retain) UIPageControl *pageControl;
- (id)initWithFrame:(CGRect)frame images:(NSMutableArray *)images;
@end
//
// LoopView.m
// Test_LoopScrollView
//
// Created by lanouhn on 14-8-30.
// Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved.
//
#import "LoopView.h"
@interface LoopView ()
{
NSMutableArray *_images;
NSUInteger _imagesCount;
}
@end
@implementation LoopView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
[self setupScrollView];
[self setupPageControl];
}
return self;
}
- (id)initWithFrame:(CGRect)frame images:(NSMutableArray *)images
{
_images = images;
_imagesCount = images.count;
[self initWithFrame:frame];
return self;
}
- (void)setupScrollView
{
self.scrollView = [[UIScrollView alloc] initWithFrame:[UIScreen mainScreen].bounds];
_scrollView.tag = 400;
_scrollView.contentSize = CGSizeMake(320 * (_imagesCount + 2), [UIScreen mainScreen].bounds.size.height);
// [_scrollView scrollRectToVisible:CGRectMake(320,0,320,[UIScreen mainScreen].bounds.size.height) animated:NO];
[_scrollView setContentOffset:CGPointMake(320, 0) animated:NO];
_scrollView.showsHorizontalScrollIndicator = NO;
_scrollView.pagingEnabled = YES;
[self addSubview:_scrollView];
[_scrollView release];
for (int i = 0; i < _imagesCount + 2; i++) {
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(320 * i, 0, 320, self.frame.size.height)];
if (i == 0) {
imageView.image = [UIImage imageNamed:@"v6_guide_6"];
} else if (i == _imagesCount + 1) {
imageView.image = [UIImage imageNamed:@"v6_guide_1"];
} else {
imageView.image = _images[i - 1];
}
[_scrollView addSubview:imageView];
[imageView release];
}
}
- (void)setupPageControl
{
self.pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(10, self.frame.size.height - 40, 300, 20)];
_pageControl.tag = 500;
_pageControl.numberOfPages = 6;
_pageControl.currentPage = 0;
_pageControl.pageIndicatorTintColor = [UIColor grayColor];
_pageControl.currentPageIndicatorTintColor = [UIColor orangeColor];
[self addSubview:_pageControl];
[_pageControl release];
}
- (void)dealloc
{
self.scrollView = nil;
self.pageControl = nil;
[super dealloc];
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
// Drawing code
}
*/
@end
//
// FlagButton.h
// Homework_163News
//
// Created by lanouhn on 14-8-30.
// Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface FlagButton : UIButton
@property (nonatomic, assign) BOOL flag;
@end
相关推荐
jquery仿网易图片详情页图片左右切换效果
文章详情页图片展示带切换,带图片标题插件
iOS 之模拟网易新闻主页的滚动效果
近下载了一个网易新闻的APP客户端,觉得新闻主页的滚动效果不错,每个标题都对应一个版面,如图
别再死磕RD算法了!用MATLAB手把手复现SAR后向投影(BP)成像(附完整代码与避坑点)
本文详细介绍了如何使用MATLAB实现合成孔径雷达(SAR)后向投影(BP)成像算法,突破传统RD算法在大斜视和复杂轨迹场景中的局限。通过完整的代码示例和避坑指南,帮助读者掌握BP算法的核心原理、内存优化策略和并行计算技巧,提升SAR成像精度与效率。
一行代码快速实现今日头条 网易新闻焦点图自动循环轮播效果
有时候我们需要顶部焦点图可以自动轮播并且左右滑动时可以循环轮播,下面就来自定义这样的控件来实现,使用起来特别简单 实现功能 1,自动循环轮播,可以设置时间 2,可以手动实现循环滑动 3,可以自定义轮播时圆点大小和颜色
ISP Tuning实战指南:从基础到高级的色彩与亮度优化
本文详细介绍了ISP Tuning的基础概念与高级调优技术,包括黑电平校正(BLC)、自动白平衡(AWB)、色彩校正矩阵(CCM)和Gamma曲线调整等核心算法。通过实战案例和调试技巧,帮助工程师提升摄像头成像质量,解决高光过曝、暗部噪点等常见问题,适用于智能门铃、车载摄像头等多种场景。
XGBoost特征重要性为0的问题:深度解析与应对策略
在机器学习领域,XGBoost(Extreme Gradient Boosting)作为一款高效且强大的集成学习算法,已经被广泛应用于各类预测任务中。然而,在实际应用过程中,许多数据科学家和工程师们遇到了一个令人困惑的现象——某些特征的重要性值为0。这不仅影响了模型的解释性,还可能导致特征选择过程中的误判。本文将深入探讨这一问题,分析其背后的原因,并提供相应的解决方案。在深入探讨特征重要性为0的问题之前,我们首先需要了解XGBoost是如何计算特征重要性的。XGBoost提供了三种常见的特征重要性计算方法:
门户网站首页常见的多张图片自动切换的代码
.block{ display:block;}#NewsPicTxt{ position: relative; width: 380px; height: 22px; border: 1px; margin: 0; padding-top: 4px; text-align: center; font-family: Sans-Serif; font-weight:bold; color: B
从零到一:在RK3588 Android12上实战RTL8723DU WiFi蓝牙双模驱动移植
本文详细介绍了在RK3588 Android12系统上实战RTL8723DU WiFi蓝牙双模驱动移植的全过程。从驱动源码获取与修改、系统级集成与编译,到调试与性能优化,提供了完整的解决方案。特别针对USB接口适配、电源管理和蓝牙共存等关键问题给出了具体代码示例,帮助开发者快速完成驱动适配并提升设备稳定性。
网页图片自动切换的方法
有很多网站的图片是可以自动切换展示的,这里码一下其中的一种实现方法。 JSP中代码为: <script> var curIndex=0; //时间间隔 单位毫秒 var timeInterval=2000; var arr=new Array(); <c:forEach items="${indexp...
车企自动泊车技术全解|纯视觉/多传感器融合双路线、端到端大模型革新 助力机械车位/无划线车位/极窄车位精准泊车落地
随着智能驾驶技术全面下沉,自动泊车已从高端车型专属配置,普及至十万级家用车型,成为车载核心刚需功能。但市面主流车企的泊车能力差距极大,核心差异源于传感器硬件架构、算法迭代逻辑、场景训练体系的全方位分化。传统规则式泊车算法仅适配标准划线车位,面对地库暗光、标线磨损、机械双层车位、极窄靠墙车位、无划线空地泊车等真实长尾场景极易失效。
OpenClaw 子代理配对失败问题分析与解决方案
OpenClaw子代理配对失败问题分析与解决方案 问题核心在于agent设备权限不足,仅有operator.approvals权限而缺少operator.admin权限,导致子代理启动时形成权限死锁。本文提供三种解决方案: 直接编辑设备配对文件(推荐):修改本地JSON文件,为agent设备添加完整operator.admin权限,操作简单快捷。 标准重新配对流程:删除现有agent设备后重新配对,通过正常审批流程获取完整权限,符合系统安全设计。 修改源码降低权限要求(仅限开发环境):调整子代理代码避免强制
android 自定义切换按钮
import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import a
Claude Code 新手安装指南,手把手教你怎么安装使用
如果你是企业内网用户,或者需要自定义 API 端点,那可以用手动配置 API Key 的方式。
android特效集锦系列之九 仿网易新闻图片切换
1. 仿网易新闻图片切换,这,其实这个效果我也很纠结啊,不想模仿的,但是。。。。 效果: 有点坑... 源码
10分钟搞定小红书爆款笔记爬取!Selenium模拟登录+数据解析全流程,新手也能落地
小红书爬虫实战的核心,是**“模拟真人操作+解析结构化数据”**——Selenium解决了动态页面和登录的问题,lxml解决了数据提取的问题,pandas解决了数据存储的问题。新手学爬虫不用一开始就啃复杂的反爬机制,先从这类“可见即可爬”的场景入手,掌握“模拟操作→数据解析→数据保存”的全流程,再逐步叠加异常处理、批量爬取、反爬应对等功能。需要注意的是:爬取数据仅用于个人学习和研究,不得用于商业用途,且需遵守小红书的用户协议,不要过度爬取导致服务器压力。
文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况
主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。
iOS 真机不能显示图片问题
怀旧版电脑GBC模拟器
再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。
在imageView依次添加7个手势, 1.点击哪个按钮,往imageView上添加哪个手势.(保证视图上只有一个手势). 2.轻拍:点击视图切换美女图片.(imageView上首先展示的美女
// // ControlView.h // HomeworkGestureRecognizer // // Created by lanouhn on 14-8-27. // Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved. // #import @interface ControlView : UIView
温度PID控制PLC程序
温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值
NTscan扫描工具
ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。
iPhone相册,(UIScrollView,UIPageControl的综合应用)捏合放大缩小, 左右滑动切换图片
// // PhotoView.h // Homework_iPhonePhoto // // Created by lanouhn on 14-8-29. // Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved. // #import @interface PhotoView : UIView @propert
滚动视图(UIScrollView)无限无缝左右切换图片,自动顺序加逆序循环播放图片
// // LoopView.h // Test_LoopScrollView // // Created by lanouhn on 14-8-30. // Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved. // #import @interface LoopView : UIView @property (
彩虹视图,霓虹灯静态效果
// // CCLAppDelegate.m // TestNeonLamp // // Created by lanouhn on 14-8-19. // Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved. // #import "CCLAppDelegate.h" @interface CCLAppDelega
iOS MKAnnotation协议为地图添加注解
添加地图注解,这个需要用到MKAnnotation这个协议,主要有两个UILabel类型的属性,title和subtitle,当用户点击小别针时候就会把相关信息显示出来,如下图: Google地图实现之三添加注解 - tergol - tergol的博客 大概的操作是这样的,先定义一个继承了MKAnnotation的类,第当需要加上注解的时候,就根据当前的region等信息,实例化出一个对像,
iOS开发必看的博客汇总
OneV's Den http://onevcat.com/ 破船之家 http://beyondvincent.com/ NSHipster http://nshipster.cn/ Limboy 无网不剩 http://limboy.me 唐巧的技术博客 http://blog.devtang.com/ Lex iOS notes http://ios.lextang.c
iOS 拨打电话 拨打完以后会回到原来的应用
NSDictionary *dic = self.names[self.titles[indexPath.section]][indexPath.row]; NSString *phone = dic[@"phoneNumber"]; //1 特点: 直接拨打, 不弹出提示。 并且, 拨打完以后, 留在通讯录中, 不返回到原来的应用。 /* if (phone !=
iOS用户引导页的简单实现
// // RootViewController.m // LessonUIPageControl // // Created by lanouhn on 14-8-29. // Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved. // #import "RootViewController.h" @interfa
2万+



被折叠的 条评论
为什么被折叠?



