//
// 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客户端,觉得新闻主页的滚动效果不错,每个标题都对应一个版面,如图
Matlab中eig内置函数转为C语言
本文记录一下如何将MATLAB中的eig函数转为C语言,即通过C语言求解矩阵的特征值与特征向量。[V,D]=eig(Rx)中V为矩阵Rx的特征向量,D为矩阵的特征值。其中Rx维度为12*12的复矩阵。 首先在MATLAB端创建入口函数保存为eigvalue.m: 打开MATLAB Coder,添加入口函数: 3.在定义输入类型窗口中,需要添加输入数据来训练...
一行代码快速实现今日头条 网易新闻焦点图自动循环轮播效果
有时候我们需要顶部焦点图可以自动轮播并且左右滑动时可以循环轮播,下面就来自定义这样的控件来实现,使用起来特别简单 实现功能 1,自动循环轮播,可以设置时间 2,可以手动实现循环滑动 3,可以自定义轮播时圆点大小和颜色
相机标定原理与张氏标定法
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
基于FME—三调篇—尖锐角及小缝隙处理
1 问题分析: 该功能实现在FME较为简单,相对ARCGIS模型构建器以及ARCGIS ENGINE,FME更适合无代码基础的人群。在三调内业数据处理要求中,尖锐角是不允许存在的。本文基于FME实现了对尖锐角的自动查询与消除以及自动处理在消除尖锐角过程中产生的缝隙,并进行了拓扑检查,实现自动化批量处理尖锐角的功能,提高工作效率。 2 总体思路: 2.1 实现功能分析: 1.找出小于指定角度的尖锐角...
门户网站首页常见的多张图片自动切换的代码
.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
凌欧通用FOC框架解析(5.程序环流程)
结构体:电流内环.这是一个结构体函数占空比13.
网页图片自动切换的方法
有很多网站的图片是可以自动切换展示的,这里码一下其中的一种实现方法。 JSP中代码为: <script> var curIndex=0; //时间间隔 单位毫秒 var timeInterval=2000; var arr=new Array(); <c:forEach items="${indexp...
从特斯拉到蔚来:拆解主流智能汽车的车联网架构,看它们如何实现‘车、路、云’协同
本文深度解析了特斯拉、蔚来等主流智能汽车的车联网架构,详细拆解了其‘车、路、云’协同的技术实现。从车内网络、车际通信到云端协同,分析了通信技术、系统架构等关键技术选择,揭示了不同厂商如何通过差异化布局构建竞争优势。
【异常】Cursor报错We‘re having trouble connecting to the model provider. This might be temporary
在使用Cursor编辑器进行AI交互操作时,界面弹出如下报错提示,导致无法正常调用模型服务,影响使用流程:We’re having trouble connecting to the model provider. This might be temporary - please try again in a moment. 该报错核心含义为Cursor编辑器无法正常连接至背后的AI模型服务提供商(如OpenAI、Anthropic等),属于连接类异常,并非编辑器本身运行故障。经排查,该报错不具备破坏性,仅
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
【感知模块算法】障碍物detect+trace+prediction方向介绍
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、多维度看感知问题,体会复杂性二、障碍物/环境目标detect方向1.视觉目标检测方向(1)图像处理认知(2)视觉基础理论部分1、获取数据集---python网页爬虫、买数据、自己录数据、使用开源比赛的数据集2、opencv库的学习3、深度学习框架学习(3)视觉目标检测理论(1)目标检测的概念(2)目标检测的应用场景(3)现有目标检测框架原理及论文【这仅仅是我当初入门学习的框架~
android特效集锦系列之九 仿网易新闻图片切换
1. 仿网易新闻图片切换,这,其实这个效果我也很纠结啊,不想模仿的,但是。。。。 效果: 有点坑... 源码
13、超声断层乳腺图像融合算法:乳腺癌诊断新突破
本文介绍了一种新型超声断层乳腺图像融合算法,通过结合超声透射(UTTc、UTTα)和反射断层图像(URT),实现对乳腺组织的多参数自动可视化。该算法能有效区分良性与恶性肿瘤,具有高准确性、无辐射、低成本等优势,适用于大规模乳腺癌早期筛查。初步临床测试验证了其可行性,未来有望成为乳腺癌诊断的新标准。
霍尼韦尔SoftMaster使用说明
霍尼韦尔SoftMaster使用说明
iOS 真机不能显示图片问题
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
在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
大中型超市收银系统(可直接运行)
光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开
假人有限元模型
假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用
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万+



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



