iOS學習筆記——滾動視圖(scrollView)

来源:http://www.cnblogs.com/roucheng/archive/2016/06/25/iosview.html
-Advertisement-
Play Games

滾動視圖:在根視圖中添加UIScrollViewDelegate協議,聲明一些對象屬性 在程式中導入圖片,在.m文件中的代碼實現: 推薦:http://www.cnblogs.com/roucheng/p/3528371.html ...


滾動視圖:在根視圖中添加UIScrollViewDelegate協議,聲明一些對象屬性

@interface BoViewController : UIViewController<UIScrollViewDelegate>  
//滾動視圖對象  
@property (retain, nonatomic) UIScrollView *scrollView;  
//視圖中小圓點,對應視圖的頁碼  
@property (retain, nonatomic) UIPageControl *pageControl;  
//動態數組對象,存儲圖片  
@property (retain, nonatomic) NSMutableArray *images;  
@end  
/* 何問起 hovertree.com */

在程式中導入圖片,在.m文件中的代碼實現:

- (void)viewDidLoad  
{  
    [super viewDidLoad];  
    //初始化scrollView  
    self.scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, 320, 345)];  
    //初始化pageControl  
    self.pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(0, 344, 320, 36)];  
    //初始化數組,存儲滾動視圖的圖片  
    self.images = [NSMutableArray arrayWithObjects:[UIImage imageNamed:@"text1.png"],[UIImage imageNamed:@"text2.png"],[UIImage imageNamed:@"text3.png"],[UIImage imageNamed:@"text4.png"], nil nil];  
    //把scrollView與pageControl添加到當前視圖中  
    [self.view addSubview:self.scrollView];  
    [self.view addSubview:self.pageControl];  
    //設置視圖的背景顏色  
    self.view.backgroundColor = [UIColor blackColor];  
    //調用 setuoPage方法  
    [self setupPage:nil];     
}  
//改變滾動視圖的方法實現  
- (void)setupPage:(id)sender  
{  
    //設置委托  
    self.scrollView.delegate = self;  
    //設置背景顏色  
    self.scrollView.backgroundColor = [UIColor blackColor];  
    //設置取消觸摸  
    self.scrollView.canCancelContentTouches = NO;  
    //設置滾動條類型  
    self.scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;  
    //是否自動裁切超出部分  
    self.scrollView.clipsToBounds = YES;  
    //設置是否可以縮放  
    self.scrollView.scrollEnabled = YES;  
    //設置是否可以進行畫面切換  
    self.scrollView.pagingEnabled = YES;  
    //設置在拖拽的時候是否鎖定其在水平或者垂直的方向  
    self.scrollView.directionalLockEnabled = NO;  
    //隱藏滾動條設置(水平、跟垂直方向)  
    self.scrollView.alwaysBounceHorizontal = NO;  
    self.scrollView.alwaysBounceVertical = NO;  
    self.scrollView.showsHorizontalScrollIndicator = NO;  
    self.scrollView.showsVerticalScrollIndicator = NO;  
    //用來記錄頁數  
    NSUInteger pages = 0;  
    //用來記錄scrollView的x坐標  
    int originX = 0;      
    for(UIImage *image in self.images)  
    {  
        //創建一個視圖  
        UIImageView *pImageView = [[[UIImageView alloc]initWithFrame:CGRectZero]autorelease];  
        //設置視圖的背景色  
        pImageView.backgroundColor = [UIColor colorWithRed:0.6 green:0.6 blue:0.6 alpha:1.0];  
        //設置imageView的背景圖  
        [pImageView setImage:image];  
        //給imageView設置區域  
        CGRect rect = self.scrollView.frame;  
        rect.origin.x = originX;  
        rect.origin.y = 0;  
        rect.size.width = self.scrollView.frame.size.width;  
        rect.size.height = self.scrollView.frame.size.height;  
        pImageView.frame = rect;  
        //設置圖片內容的顯示模式(自適應模式)  
        pImageView.contentMode = UIViewContentModeScaleAspectFill;  
        //把視圖添加到當前的滾動視圖中  
        [self.scrollView addSubview:pImageView];  
        //下一張視圖的x坐標:offset為:self.scrollView.frame.size.width.  
        originX += self.scrollView.frame.size.width;  
        //記錄scrollView內imageView的個數  
        pages++;  
    }  
    //設置頁碼控制器的響應方法  
    [self.pageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged];  
    //設置總頁數  
    self.pageControl.numberOfPages = pages;  
    //預設當前頁為第一頁  
    self.pageControl.currentPage = 0;  
    //為頁碼控制器設置標簽  
    self.pageControl.tag = 110;  
    //設置滾動視圖的位置  
    [self.scrollView setContentSize:CGSizeMake(originX, self.scrollView.bounds.size.height)];      
}  
//改變頁碼的方法實現  
- (void)changePage:(id)sender  
{  
    NSLog(@"指示器的當前索引值為:%i",self.pageControl.currentPage);  
    //獲取當前視圖的頁碼  
    CGRect rect = self.scrollView.frame;  
    //設置視圖的橫坐標,一幅圖為320*460,橫坐標一次增加或減少320像素  
    rect.origin.x = self.pageControl.currentPage * self.scrollView.frame.size.width;  
    //設置視圖縱坐標為0  
    rect.origin.y = 0;  
    //scrollView可視區域  
    [self.scrollView scrollRectToVisible:rect animated:YES];      
}  
#pragma mark-----UIScrollViewDelegate---------  
//實現協議UIScrollViewDelegate的方法,必須實現的  
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView  
{  
    //獲取當前視圖的寬度  
    CGFloat pageWith = scrollView.frame.size.width;  
    //根據scrolView的左右滑動,對pageCotrol的當前指示器進行切換(設置currentPage)  
    int page = floor((scrollView.contentOffset.x - pageWith/2)/pageWith)+1;  
    //切換改變頁碼,小圓點  
    self.pageControl.currentPage = page;  
}  
  
- (void)didReceiveMemoryWarning  
{  
    [super didReceiveMemoryWarning];  
    // Dispose of any resources that can be recreated.  
}  
//釋放創建的對象  
- (void)dealloc  
{  
    [_pageControl release];  
    [_scrollView release];  
    [super dealloc];  
}  /* 何問起 hovertree.com */

推薦:http://www.cnblogs.com/roucheng/p/3528371.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 如果是自己通過repo和git直接從google官網上download的源碼,請忽略這個問題,但是由於google在國內被限制登錄,通過這一種方法不是每個人都能download下來源碼,通常的做法就是從別人那拷貝,然後自己編譯,那麼通常會出現下麵的錯誤: No rule to make target ...
  • 1.統一界面管理 1.1利用一個activity去管理應用的所有的界面 1.1.1 理解Activity,Window和View之間的關係 1.1.2 避免Activity過多導致的問題, 例如:徹底退出應用,頻繁改動清單文件等 統一界面風格,降低用戶的學習成本 2.界面劃分 2.1展示效果圖,將界 ...
  • 當我們在使用tableview時,往往需要在cell左滑時顯示一個或是多個按鈕,但系統預設的只可顯示一個,如常見的刪除按鈕,那麼當我們的需求要求要有多個按鈕時又該怎麼辦呢,我們往下看。 首先,現看看系統的按鈕(只顯示一個按鈕時) //設置cell左滑後的刪除按鈕文字 -(NSString *)tab ...
  • //佈局相關<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" an ...
  • 這個項目是本人原創:要轉載,請說明下:http://www.cnblogs.com/blogwithstudyofwyn/p/5618107.html 項目的地址:https://github.com/Shangshanroushui/ShoppingCart.git 該程式是個一元奪寶的的購物車。 ...
  • ...
  • 一.什麼是Service Service是一個應用程式組件,它是安卓實現程式後臺運行的一個解決方案。 二.分類 服務有兩種類別started、bound.但是一個服務類所要繼承的類是一樣的,都是Service類。也就是說,一個服務,可以包含上面兩種運行方式的服務,只是與它重載的方法有關,如果重寫了o ...
  • 我以自己項目中的一個模塊為例,首先有兩個頁面,第一個頁面為顯示城市頁面,第二個頁面為選擇要使用block傳的值(城市名)。 第一個頁面中的顯示控制項: //自定義左部定位視圖 self.locView = [[LocationView alloc] initWithFrame:CGRectMake(0 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...