iOS開發項目實戰——Swift實現ScrollView捲軸功能

來源:互聯網
上載者:User

標籤:scrollview   ios   swift   捲軸   

       手機作為一個小屏裝置,需要顯示的資訊往往無法在一個螢幕上顯示,此時就需要使用到捲軸,當然除了像TableView這樣可以內建滾動功能的。如果一個介面上View較多,那就必須要使用到ScrollView了。現在我們將會使用Swift在iOS上實現滾動效果。具體實現如下:

(1)建立一個新的iOS項目,語言選擇Swift,並在Main.storyboard中拖入一個ScrollView控制項。然後在ScrollView中拖入幾張照片,等下可以使用滾動功能查看照片,介面如下:


(2)把ScrollView和幾個ImageView拖拽與代碼進行Outlet綁定,綁定後代碼如下:

    @IBOutlet weak var homepageScrollView: UIScrollView!  //這個是捲軸;    @IBOutlet weak var image1: UIImageView!    @IBOutlet weak var image2: UIImageView!    @IBOutlet weak var image3: UIImageView!    

(3)然後在viewDidLoad()方法中實現 捲軸的代碼,注意如下contentSize的使用,必須設定ScrollView的內容大小,介面才會有滾動效果,並且這個大小是可以自己任意輸入的,你設定多大的長和寬,整個ScrollView就像畫布,這個畫布的大小就是多大,然後由於螢幕較小,只能顯示一部分,所以你就可以通過滑動查看其他未見的部分。

    override func viewDidLoad() {        super.viewDidLoad()        //在捲軸中增加View;        homepageScrollView.addSubview(image1)//不斷在ScrollView中添加子控制項;        homepageScrollView.addSubview(image2)        homepageScrollView.addSubview(image3)        homepageScrollView.contentSize=CGSize(width: image1.bounds.size.width, height: image1.bounds.size.height+image2.bounds.size.height+image3.bounds.size.height+500)        //注意要添加所有控制項的高度到ScrollView中;也可以自訂長和寬;            }

(4)運行程式,查看結果。



(5)可能會有人有疑問,我上面的圖片都是直接添加到storyboard中的,都是寫死的,我現在通過代碼動態增加一張圖片,並且添加到ScrollView中。以此來真正實現捲軸的功能;

動態顯示圖片代碼:

        //這裡的“image4”是通過代碼動態添加的,而不是在storyboard中寫死的,加在image3下面;        var imageView:UIImage = UIImage(named: "gallery4")!        //gallery4是這張圖片的名字,不需要副檔名;        var image4:UIImageView = UIImageView(frame: CGRect(origin: CGPoint(x: 0,y: image1.bounds.size.height+image2.bounds.size.height+image3.bounds.size.height), size: image1.bounds.size))        //設定這張圖片的顯示位置和大小,原圖較大,我設定為和image1大小一樣;        image4.image = imageView

繼續在ScrollView中增加這個View:

 homepageScrollView.addSubview(image4)

最後別忘了在contentSize中增加相應的長度:

homepageScrollView.contentSize=CGSize(width: image1.bounds.size.width, height: image1.bounds.size.height+image2.bounds.size.height+image3.bounds.size.height+image4.bounds.size.height+500)//注意要添加所有控制項的高度到ScrollView中;也可以自訂長和寬;

所以最後整個類中的代碼如下:

class HomepageViewController: UIViewController,UIScrollViewDelegate{    //注意要實現這個Delegate委託;            @IBOutlet weak var homepageScrollView: UIScrollView!  //這個是捲軸;    @IBOutlet weak var image1: UIImageView!    @IBOutlet weak var image2: UIImageView!    @IBOutlet weak var image3: UIImageView!        override func viewDidLoad() {        super.viewDidLoad()        //這裡的“image4”是通過代碼動態添加的,而不是在storyboard中寫死的,加在image3下面;        var imageView:UIImage = UIImage(named: "gallery4")!        //gallery4是這張圖片的名字,不需要副檔名;        var image4:UIImageView = UIImageView(frame: CGRect(origin: CGPoint(x: 0,y: image1.bounds.size.height+image2.bounds.size.height+image3.bounds.size.height), size: image1.bounds.size))        //設定這張圖片的顯示位置和大小,原圖較大,我設定為和image1大小一樣;        image4.image = imageView                //在捲軸中增加View;        homepageScrollView.addSubview(image1)//不斷在ScrollView中添加子控制項;        homepageScrollView.addSubview(image2)        homepageScrollView.addSubview(image3)            homepageScrollView.addSubview(image4)        homepageScrollView.contentSize=CGSize(width: image1.bounds.size.width, height: image1.bounds.size.height+image2.bounds.size.height+image3.bounds.size.height+image4.bounds.size.height+500)//注意要添加所有控制項的高度到ScrollView中;也可以自訂長和寬;            }    override func didReceiveMemoryWarning() {        super.didReceiveMemoryWarning()        // Dispose of any resources that can be recreated.        ///////////////////////////////////////////    }}

(6)最後運行結果如下:



     其實ScrollView捲軸還有很多其他的屬性設定和特性,有一部分也可以在storyboard中進行設定,是博大精深的,我們以後在開發中在慢慢學習。









著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

iOS開發項目實戰——Swift實現ScrollView捲軸功能

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.