0
私はUIScrollViewを最大2個のView Controllerにフックしました。このように別のクラスのScrollViewデリゲートメソッドへのアクセス
let V1 = self.storyboard?.instantiateViewControllerWithIdentifier("HomeScreen") as UIViewController!
//Add initialized view to main view and its scroll view and also set bounds
self.addChildViewController(V1)
self.scrollVieww.addSubview(V1.view)
V1.didMoveToParentViewController(self)
V1.view.frame = scrollVieww.bounds
//Initialize using Unique ID for the View
let V2 = self.storyboard?.instantiateViewControllerWithIdentifier("MainScreen") as UIViewController!
//Add initialized view to main view and its scroll view also set bounds
self.addChildViewController(V2)
self.scrollVieww.addSubview(V2.view)
V2.didMoveToParentViewController(self)
V2.view.frame = scrollVieww.bounds
//Create frame for the view and define its urigin point with respect to View 1
var V2Frame: CGRect = V2.view.frame
V2Frame.origin.x = self.view.frame.width
V2.view.frame = V2Frame
//The width is set here as we are dealing with Horizontal Scroll
//The Width is x3 as there are 3 sub views in all
self.scrollVieww.contentSize = CGSizeMake((self.view.frame.width) * 2, (self.view.frame.height))
ここでは、このクラスの内部に書かれているScrollView Delegateメソッドを使用できます。
今私はクラスMain_Screenに行き、UIScrollViewDelegateでサブクラス化しました。 Main_Screenクラスのための
コード
import UIKit
public class Main_Screen: UIViewController , UIScrollViewDelegate {
@IBOutlet weak var aboutMebtn: UIButton!
@IBOutlet weak var studybtn: UIButton!
@IBOutlet weak var appsbtn: UIButton!
@IBOutlet weak var skillsbtn: UIButton!
var scrollView : UIScrollView!
@IBOutlet var avatarImageView: UIImageView!
weak var pageControl: UIPageControl!
var mainRead : Bool = false
override public func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
// Making the view round
for v : UIView in self.view.subviews {
if v.tag != 1 {
v.layer.cornerRadius = v.frame.size.width/2
v.layer.masksToBounds = true
}
}
}
public func animate(){
// I get a fatal error here
var buttons : Array<UIButton> = [aboutMebtn , studybtn , appsbtn , skillsbtn]
avatarImageView.alpha = 0.0
avatarImageView.transform = CGAffineTransformMakeScale(1.25, 1.25)
UIView.animateWithDuration(1.0, delay: 1.0, usingSpringWithDamping: 1.0, initialSpringVelocity: 0.0, options: .CurveEaseIn, animations: {() -> Void in
self.avatarImageView.alpha = 1.0
self.avatarImageView.transform = CGAffineTransformMakeScale(0.75, 0.75)
}, completion: nil)
}
public func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
if(scrollView.contentOffset.x == self.view.frame.size.width * 1){
print("Main is read")
}
}
しかし、UIScrollViewの委任の方法文句を言わない実行。私は上記のアニメーション機能を実行したいとあなたはおそらくそれを逃しUIScrollViewのデリゲートとして
self.scrollVieww.delegate = self;
をあなたのビューコントローラを割り当てる必要がありますscrollViewDidEndDeclerating
法に
私はそれを行いましたが、そのクラスのメソッドにしかアクセスできず、読みやすいようにコードを切り出しました。 –