UIScrollViewのcontentoffsetをcontentsizeの中心へ
説明
これは完全に自分の作業内容を記録しておくためだけの記事です。スクロールビューに平行にアドサブビューされた正四角形がいくつかあったとして、スクロールビューのコンテンツサイズをのちょうど中心を、コンテンツオフセットの初期位置にするというコードです。下記のロジックでそれが実装できます
//コンテンツオフセット = (コンテンツサイズを2で割った値 - セルフのビューの横幅/2)
scrollview.contentOffset = CGPoint(x: sizeview/2 - self.view.frame.width/2, y: 0)
実装
import UIKit
class ViewController: UIViewController {
var scrollview = UIScrollView()
var View = UIView()
var View2 = UIView()
var View3 = UIView()
var View4 = UIView()
var View5 = UIView()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let viewX = self.view.frame.width
let viewY = self.view.frame.height
scrollview.frame = CGRect(x:0, y:0, width:viewX , height:viewY/2)
scrollview.backgroundColor = UIColor.red
self.view.addSubview(scrollview)
View.frame = CGRect(x:0, y:0, width:300 , height:300)
View.backgroundColor = UIColor.black
//View.layer.borderWidth = 1.0
scrollview.addSubview(View)
View2.frame = CGRect(x:300, y:0, width:300 , height:300)
View2.backgroundColor = UIColor.green
//View2.layer.borderWidth = 1.0
scrollview.addSubview(View2)
View3.frame = CGRect(x:600, y:0, width:300 , height:300)
View3.backgroundColor = UIColor.orange
//View2.layer.borderWidth = 1.0
scrollview.addSubview(View3)
View4.frame = CGRect(x:900, y:0, width:300 , height:300)
View4.backgroundColor = UIColor.purple
//View4.layer.borderWidth = 1.0
scrollview.addSubview(View4)
View5.frame = CGRect(x:1200, y:0, width:300 , height:300)
View5.backgroundColor = UIColor.gray
//View5.layer.borderWidth = 1.0
scrollview.addSubview(View5)
let sizeview = View.frame.width + View2.frame.width + View3.frame.width + View4.frame.width + View5.frame.width//1500
scrollview.contentSize = CGSize(width:sizeview , height:viewY/2)
if(view.frame.width > scrollview.contentSize.width){
print("true")
var transTrans = CGAffineTransform()
transTrans = CGAffineTransform(translationX: 50, y: 0)
View.transform = transTrans
}else{
print("false")
scrollview.contentOffset = CGPoint(x: sizeview/2 - self.view.frame.width/2, y: 0)
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
宣伝
Twitterやってるよ^^
YouTubeもやってるよ
よければフォローしてくれたらフォロバする〜
SEOとかウェブ開発得意ですーー
お気軽に絡んでください〜