`
gekie
  • 浏览: 158138 次
  • 性别: Icon_minigender_1
  • 来自: 海口
社区版块
存档分类
最新评论

代码自定义UIScrollView实现

阅读更多

// The designated initializer.  Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization.
		self.title = @"主流公司指数";
		mainView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
		mainView.delegate = self;
		
		[self.view addSubview:mainView];
		UIBarButtonItem *reloadItem = [[UIBarButtonItem alloc] initWithTitle:@"重新加载" style:UIBarButtonItemStylePlain target:self action:@selector(reloadItem_click)];	
		
		self.navigationItem.rightBarButtonItem = reloadItem;
		
		/*mainView = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.view.frame.size.width, 400)];
		mainView.directionalLockEnabled = YES;
		mainView.pagingEnabled = YES;
		mainView.backgroundColor = [UIColor blueColor];
		mainView.showsVerticalScrollIndicator = NO;
		mainView.showsHorizontalScrollIndicator = NO;
		mainView.delegate = self;
		
		CGSize newSize = CGSizeMake(self.view.frame.size.width * 2,  self.view.frame.size.height);
		[mainView setContentSize:newSize];
		
		[self.view addSubview:mainView];
		
		pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0.0, 401, self.view.frame.size.width, 80)];
		pageControl.hidesForSinglePage = YES;
		pageControl.userInteractionEnabled = NO;
		pageControl.backgroundColor = [UIColor redColor];
		[self.view addSubview:pageControl];
		
		page1=[[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.view.frame.size.width, self.view.frame.size.height)];
		page1.backgroundColor=[UIColor redColor];
		
		[mainView addSubview:page1];
		
		
		page2=[[UIView alloc] initWithFrame:CGRectMake(self.view.frame.size.width, 0.0, self.view.frame.size.width, self.view.frame.size.height)];
		page2.backgroundColor=[UIColor blueColor];
		
		[mainView addSubview:page2];		//[mainView setBackgroundColor:[UIColor redColor]];
		 */
		
	}
    return self;
}


/*
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
}
*/


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
	
	/*BfViewController *bf = [[BfViewController alloc]init];
	[self.view addSubview:bf.view];
	[bf setTopicText:@"test"];
	[bf setMarkText:@"mark"];
	 */
	/*[super viewDidLoad];
	waitView = [[UIWaitingView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
	[self.view addSubview:waitView];
	[self.view bringSubviewToFront:waitView];
	[waitView starActivityLoading];
	
	[waitView setLoadingLabel:@"正在加载数据..."];
	 */
	
	//[bf release];
	//[bf2 release];
}
- (void)viewDidAppear:(BOOL)animated{
	NSLog(@"CompanyController.viewDidAppear");
	[super viewDidAppear:animated];
	if(companyList==nil){
		[[WaitDialog sharedWaitDialog] setLoadingLabel:@"链接网络中.."];
		timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(fetchData) userInfo:nil repeats:NO];
	}
}
-(void)fetchData{
	[self removeAllView];
	companyList = [JSONParser loadData:@"http://3g.wapzq.com/odds/json/company.jsp" isAllValues:NO valueForKey:@"list"];
	//NSLog(@"companyList:%@",arr);
	//[waitView endActivityLoading];
	//[waitView removeFromSuperview];
	//[[WaitDialog sharedWaitDialog]endShowLoading];
	[[WaitDialog sharedWaitDialog]setLoadingLabel:@"正在构造界面..."];
	[self makeView];
}
-(void)removeAllView{
	for(UIView *subView in [mainView subviews]){
		[subView removeFromSuperview];
	}	
}
-(void)makeView{
	[[WaitDialog sharedWaitDialog]endShowLoading];

	if(companyList==nil||[companyList count]==0){
		UILabel *nullData = [[UILabel alloc]initWithFrame:CGRectMake(10, 10, self.view.frame.size.width-20, 40)];
		nullData.text = @"暂时没有数据";
		nullData.backgroundColor = [UIColor clearColor];
		nullData.font = [UIFont systemFontOfSize:20];
		[mainView addSubview:nullData];
	}else{
		int count = [companyList count];
		int i = 0;
		int x = 10;
		int y = 10;
		int width = self.view.frame.size.width / 2 - 40;
		int height = 30;
		int contentHeight = (height+y*2)*count/2;
		CGSize newSize = CGSizeMake(self.view.frame.size.width,contentHeight);
		[mainView setContentSize:newSize];
		for(i = 0; i < count/2; i++){
			NSArray *company = [companyList objectAtIndex:i];
			// NSLog(@"index %d has %@.",i, [companyList objectAtIndex:i]);
			//NSLog(@"company.id:%@,name:%@",[company valueForKey:@"cid"],[company valueForKey:@"name"]);
			UIButton *btn = [[UIButton buttonWithType:UIButtonTypeRoundedRect]retain];
			btn.frame = CGRectMake(x, y, width, height);
			btn.backgroundColor = [UIColor clearColor];
			//UIButton*btn=[[UIButton alloc]initWithFrame:CGRectMake(x, y, width, height)];
			//btn.backgroundColor =  [UIColor colorWithRed:0.52 green:0.09 blue:0.07 alpha:1];
			//[btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
			[btn setTitle:[company valueForKey:@"name"] forState:UIControlStateNormal];
			//btn.titleLabel.font = [UIFont systemFontOfSize:19];
			
			[btn addTarget:self action:@selector(selectCompany:) forControlEvents:UIControlEventTouchUpInside];
			[mainView addSubview:btn];
			[btn release];
			y+=height+10;
			
			
		}
		x = self.view.frame.size.width /2 +10;
		y = 10;
		for(i;i<count;i++){
			NSArray *company = [companyList objectAtIndex:i];
			UIButton *btn = [[UIButton buttonWithType:UIButtonTypeRoundedRect]retain];
			btn.frame = CGRectMake(x, y, width, height);
			//[btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
			[btn setTitle:[company valueForKey:@"name"] forState:UIControlStateNormal];
			//btn.titleLabel.font = [UIFont systemFontOfSize:19];
			[btn addTarget:self action:@selector(selectCompany:) forControlEvents:UIControlEventTouchUpInside];
			[mainView addSubview:btn];
			[btn release];
			y+=height+10;
			
		}
		
	}
}
分享到:
评论

相关推荐

    ios-UIScrollView分页滑动宽度自定义.zip

    本示例“ios-UIScrollView分页滑动宽度自定义.zip”专注于讲解如何自定义UIScrollView的分页滑动宽度,以实现更灵活、个性化的用户界面。这通常涉及到的内容包括UIScrollView的基本使用、pagingEnabled属性的设置...

    iOS自定义UIScrollView的滚动条实例代码

    下面我们将讨论如何实现iOS自定义UIScrollView的滚动条实例代码。 首先,我们需要解决的主要问题是如何改变滚动条的位置,进而确保滚动条和scrollView在相同时间内走完自己的位移。解决这个问题的关键是找到滚动条...

    Swift-一句代码让UIScrollView的滑动和系统侧滑手势并存

    4. 实现UIGestureRecognizerDelegate的`gestureRecognizer:shouldRequireFailureOfGestureRecognizer:`方法,以便在滑动UIScrollView时阻止侧滑手势: ```swift func gestureRecognizer(_ gestureRecognizer: ...

    UIScrollView、UIScrollView基本用法、UIScrollView详解

    - **添加内容视图**:首先需要将想要展示的内容添加到 UIScrollView 内部,这通常是指 UIView 子类的实例,比如 UILabel、UIImageView 或者自定义视图等。 - **设置 contentSize 属性**:contentSize 属性决定了...

    iOS 下类似UITableView的可循环列表利用UIScrollView制作

    综上所述,通过自定义UIScrollView,我们可以实现一个类似UITableView的无限循环列表。这种方式虽然比直接使用UITableView更复杂,但在某些场景下,如轮播图、无限滚动列表等,它能提供更大的灵活性和定制化空间。在...

    ios-酒店预订App.zip

    自定义UIScrollView实现全屏滑动显示不同控制器的LBPScrollSegmentView 封装网络访问类AFNetPackage,具备检查网络状态、JSON方式获取数据、xml方式获取数据、post、get、delete、文件下载、文件上传等功能 ...

    iOS开发中使用UIScrollView实现图片轮播和点击加载

    UIScrollView控件实现图片轮播 一、实现效果 实现图片的自动轮播 二、实现代码 storyboard中布局 代码: 代码如下: #import “YYViewController.h” @interface YYViewController () @property (weak, ...

    ios-UIScrollView.zip

    这通常是通过自定义UIScrollView的行为来实现的。开发者可能通过监听滑动手势的细节,比如滑动速度和方向,判断是否达到页面边缘。一旦到达边界,可以动态地添加或者显示预先设计好的箭头和文字视图。这些视图可能是...

    Swift实现可自定义分页宽度的UIScrollView

    总结来说,实现Swift中的可自定义分页宽度的UIScrollView主要涉及自定义contentSize、禁止裁剪边界、处理contentOffset、响应边缘触摸以及实现无限和自动轮播等功能。通过这些技术手段,我们可以创建出更加灵活、...

    swift-YWTableView继承于UIScrollView自定义个特殊的tableView

    2. **自定义绘制**:由于继承自`UIScrollView`,`YWTableView`可以直接使用`draw(_ rect: CGRect)`方法来实现自定义的绘制逻辑,创建独特的单元格样式或者背景视图。 3. **滑动效果**:可以自定义滑动手势,比如...

    UIScrollView 用法详解

    本文将深入解析UIScrollView的使用方法,包括基本设置、内容布局、滚动操作以及自定义行为。 首先,我们需要了解UIScrollView的基本结构。一个UIScrollView通常包含一个或多个子视图,这些子视图构成了可滚动的内容...

    UIScrollview图片截取-放大-缩小

    在.m文件中,我们需要实现UIScrollViewDelegate的方法,如`- (void)scrollViewDidZoom:(UIScrollView *)scrollView`来响应缩放操作,以及自定义的截取图片的逻辑。 总的来说,这个项目涉及了iOS开发中关于...

    uiscrollview uitableview上拉刷新

    在iOS开发中,`UIScrollView` 和 `UITableView` 是两个核心组件,用于实现可滚动内容的显示,例如在应用中展示大量的列表数据。本教程将详细讲解如何在 `UIScrollView`(尤其是 `UITableView`)中实现上拉和下拉刷新...

    UIScrollView

    UIScrollView是iOS开发中一个非常重要的视图类,用于展示可滚动的内容。...但理解并掌握上述知识点,对于自定义实现轮播图功能是非常必要的。通过实践和优化,你可以创建出满足各种需求的高效、流畅的轮播图组件。

    UIScrollView霸气代码演示

    本教程将通过"UIScrollView霸气代码演示"深入解析如何有效地使用UIScrollView及其子视图,来创建可滚动的界面。我们将涵盖以下几个关键知识点: 1. UIScrollView基本用法: - 初始化:你可以通过`init(frame:)`...

    UIScrollView键盘支持代码

    `SLScrollView`可能是开发者自定义的一个`UIScrollView`子类,它可能已经封装了上述的键盘处理逻辑,方便在项目中直接使用。`SLScrollViewKeyboardSupport`可能是这个库中的一个模块或者类,专门处理键盘相关的支持...

    ios scrollview循环(轻松实现自定义)

    3. 创建一个内部类,继承自`UIScrollView`,并在其中实现自定义的循环滚动逻辑。这可能包括添加一个额外的视图,以便在滚动到边缘时平滑过渡。 4. 为每个ScrollView子视图添加`UITapGestureRecognizer`,并将其代理...

    uiscrollview 无缝循环滚动

    为了实现这种效果,开发者通常需要自定义`UIScrollView`的行为,这涉及到对`UICollectionView`或者`UIPageControl`的使用,以及一些额外的布局和数据管理技巧。 首先,我们要理解`UIScrollView`的工作原理。`...

    ios-自定义UIPageControl,实现同时显示不同大小的圆点.zip

    这个压缩包文件"ios-自定义UIPageControl,实现同时显示不同大小的圆点.zip"包含了名为"SMLPageControl"的自定义UIPageControl实现。 SMLPageControl可能是对UIPageControl的扩展,它提供了自定义圆点大小的功能。...

Global site tag (gtag.js) - Google Analytics