国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

iOS仿網(wǎng)易新聞滾動導(dǎo)航條效果

2020-07-26 02:27:17
字體:
供稿:網(wǎng)友

本文實(shí)例為大家分享了iOS滾動導(dǎo)航條效果展示的具體代碼,供大家參考,具體內(nèi)容如下

實(shí)現(xiàn)效果

效果:選擇不同的欄目,下面出現(xiàn)不同的視圖,欄目條可以滾動;下面的視圖也可以滾動,滾動時上面對應(yīng)的欄目要選中顏色為紅色;

滾動的導(dǎo)航條包括兩部分:標(biāo)題滾動視圖(UIScrollView),內(nèi)容滾動視圖(UIScrollView)

實(shí)現(xiàn)代碼

1.首先實(shí)現(xiàn)Main.storyboard

2.創(chuàng)建多個子控制器:頭條、科技、汽車、體育、視頻、圖片、熱點(diǎn)

// 頭條ViewController, 其它控制器和這個控制器都一樣,只是背景顏色不同而已#import <UIKit/UIKit.h>@interface TopLineViewController : UIViewController@end//----------------------------------------------------------------#import "TopLineViewController.h"@interface TopLineViewController ()@end@implementation TopLineViewController- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor blackColor];}@end

實(shí)現(xiàn)Main.storyboard對應(yīng)的視圖控制器ViewController

#import <UIKit/UIKit.h>@interface ViewController : UIViewController@end//----------------------------------------------------------------#import "ViewController.h"#import "TopLineViewController.h"#import "TechnologyViewController.h"#import "CarViewController.h"#import "SportsViewController.h"#import "VideoViewController.h"#import "ImageViewController.h"#import "HotViewController.h"#define ScreenWidth [UIScreen mainScreen].bounds.size.width#define ScreenHeight [UIScreen mainScreen].bounds.size.height@interface ViewController () <UIScrollViewDelegate>@property (weak, nonatomic) IBOutlet UIScrollView *titleScrollView;@property (weak, nonatomic) IBOutlet UIScrollView *contentScrollView;@property (strong, nonatomic) NSMutableArray *buttons;@property (strong, nonatomic) UIButton *selectedButton;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; self.navigationItem.title = @"網(wǎng)易新聞"; // 1. 初始化標(biāo)題滾動視圖上的按鈕 [self initButtonsForButtonScrollView];}- (void) initButtonsForButtonScrollView { // 初始化子控制器 [self initChildViewControllers]; CGFloat buttonWidth = 100; CGFloat buttonHeight = 40; NSInteger childViewControllerCount = self.childViewControllers.count; for (NSInteger i = 0; i < childViewControllerCount; i++) {  UIViewController *childViewController = self.childViewControllers[i];  UIButton *titleButton = [UIButton buttonWithType:UIButtonTypeCustom];  titleButton.tag = i;  CGFloat x = i * buttonWidth;  titleButton.frame = CGRectMake(x, 0, buttonWidth, buttonHeight);  [titleButton setTitle:childViewController.title forState:UIControlStateNormal];  [titleButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];  [titleButton addTarget:self action:@selector(titleButtonOnClick:) forControlEvents:UIControlEventTouchUpInside];  [self.titleScrollView addSubview:titleButton];  [self.buttons addObject:titleButton]; } self.titleScrollView.contentSize = CGSizeMake(buttonWidth * childViewControllerCount, 0); self.titleScrollView.showsHorizontalScrollIndicator = NO; self.titleScrollView.bounces = NO; self.contentScrollView.contentSize = CGSizeMake(ScreenWidth * childViewControllerCount, 0); self.contentScrollView.showsHorizontalScrollIndicator = NO; self.contentScrollView.pagingEnabled = YES; self.contentScrollView.delegate = self; // 禁止額外滾動區(qū)域 self.automaticallyAdjustsScrollViewInsets = NO; // 初始化時默認(rèn)選中第一個 [self titleButtonOnClick:self.buttons[0]];}- (void)titleButtonOnClick:(UIButton *)button { // 1. 選中按鈕 [self selectingButton:button]; // 2. 顯示子視圖 [self addViewToContentScrollView:button];}- (void)selectingButton:(UIButton *)button { [_selectedButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; _selectedButton.transform = CGAffineTransformMakeScale(1.0, 1.0); [button setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; button.transform = CGAffineTransformMakeScale(1.3, 1.3); // 選中字體變大,按鈕變大,字體也跟著變大 _selectedButton = button; // 選中按鈕時要讓選中的按鈕居中 CGFloat offsetX = button.frame.origin.x - ScreenWidth * 0.5; CGFloat maxOffsetX = self.titleScrollView.contentSize.width - ScreenWidth; if (offsetX < 0) {  offsetX = 0; } else if (offsetX > maxOffsetX) {  offsetX = maxOffsetX; } [self.titleScrollView setContentOffset:CGPointMake(offsetX, 0) animated:YES];}- (void)addViewToContentScrollView:(UIButton *)button { NSInteger i = button.tag; UIViewController *childViewController = self.childViewControllers[i]; CGFloat x = i * ScreenWidth; // 防止添加多次 if (childViewController.view.subviews != nil) {  childViewController.view.frame = CGRectMake(x, 0, ScreenWidth, ScreenHeight);  [self.contentScrollView addSubview:childViewController.view]; } self.contentScrollView.contentOffset = CGPointMake(x, 0);}#pragma mark - UIScrollViewDelegate- (void)scrollViewDidScroll:(UIScrollView *)scrollView {}// 滾動結(jié)束時,將對應(yīng)的視圖控制器的視圖添加到內(nèi)容滾動視圖中- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { NSInteger i = self.contentScrollView.contentOffset.x / ScreenWidth; [self addViewToContentScrollView:_buttons[i]]; // 內(nèi)容滾動視圖結(jié)束后選中對應(yīng)的標(biāo)題按鈕 [self selectingButton:_buttons[i]];}- (void)initChildViewControllers { // 0.頭條 TopLineViewController * topViewController = [[TopLineViewController alloc] init]; topViewController.title = @"頭條"; [self addChildViewController:topViewController]; // 1.科技 TechnologyViewController * technologyViewController = [[TechnologyViewController alloc] init]; technologyViewController.title = @"科技"; [self addChildViewController:technologyViewController]; // 2.汽車 CarViewController * carViewController = [[CarViewController alloc] init]; carViewController.title = @"汽車"; [self addChildViewController:carViewController]; // 3.體育 SportsViewController * sportsViewController = [[SportsViewController alloc] init]; sportsViewController.title = @"體育"; [self addChildViewController:sportsViewController]; // 4.視頻 VideoViewController * videoViewController = [[VideoViewController alloc] init]; videoViewController.title = @"視頻"; [self addChildViewController:videoViewController]; // 5.圖片 ImageViewController * imageViewController = [[ImageViewController alloc] init]; imageViewController.title = @"圖片"; [self addChildViewController:imageViewController]; // 6.熱點(diǎn) HotViewController * hotViewController = [[HotViewController alloc] init]; hotViewController.title = @"熱點(diǎn)"; [self addChildViewController:hotViewController];}- (NSMutableArray *)buttons { if (_buttons == nil) {  _buttons = [NSMutableArray array]; } return _buttons;}@end

以上代碼即可實(shí)現(xiàn)網(wǎng)易新聞 滾動的導(dǎo)航條, 因該功能可能在其它地方使用,所以最好可以將該功能抽出來,便于其它控制器集成,暫時還沒做。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 丹阳市| 兰西县| 独山县| 买车| 荣昌县| 甘泉县| 穆棱市| 呈贡县| 梁河县| 且末县| 湘潭县| 秦安县| 盐山县| 辛集市| 新乐市| 乌鲁木齐市| 江陵县| 莆田市| 清水县| 乡宁县| 白银市| 武强县| 肥城市| 轮台县| 灵石县| 永新县| 昭通市| 洱源县| 唐河县| 新蔡县| 石门县| 永安市| 和田县| 延长县| 合阳县| 蒙城县| 横山县| 华池县| 南皮县| 凤山市| 共和县|