私は、UIView(ParentView)とUIScrollview(ScrollView)を持つView Controllerを持っています。 ParentViewは、ViewControllerの先頭、末尾、上端および下端に固定されています。 ScrollViewは、ParentViewの先頭、末尾、上端および下端に固定されています。構造は次のようなものです:ScrollViewのAutoLayoutを修正するには?
次に、イメージとラベルを持つxibファイルを作成しました。 xibはScrollViewに動的に追加されます。 xibフレームの高さと幅はScrollViewの高さと幅に等しい。
iphone 6でシミュレータを実行すると、スクロールが完全に機能します。 xibの幅はまさに画面の幅です。しかし、iphone 6でシミュレータを実行すると、xibの幅が画面のサイズと同じになり、次の項目にスクロールするときに余分なスペースがあります。私はそれを削除するために何をすべきですか?
この
はそしてここでは私のコードである。これは、iphone用のスクリーンショット6.お知らせ第2のスクリーンの余分なスペースでスクリーンiphone 6のためのショットプラス
です:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var ParentView: UIView!
@IBOutlet weak var ScrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let photos = ["joe", "john"]
let userNames = ["joe", "john"]
self.ScrollView.frame = CGRectMake(0, 0, self.ParentView.frame.size.width, self.ParentView.frame.size.height)
self.ScrollView.contentSize = CGSizeMake(self.ParentView.frame.size.width * CGFloat(photos.count), self.ParentView.frame.size.height)
self.ScrollView.pagingEnabled = true
var i: Int = 0
while i < 2 {
if let userXib = NSBundle.mainBundle().loadNibNamed("User", owner: self, options: nil)[0] as? User {
userXib.frame = CGRect(x: self.ScrollView.frame.size.width * CGFloat(i), y: 0, width: self.ScrollView.frame.size.width, height: userXib.frame.size.height)
userXib.assignValues(photos[i], myName: userNames[i])
self.ScrollView.addSubview(userXib)
}
i = i + 1
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
UPDATE#1 - Coder1000ソリューション: 私はIMPを試してみました#3 &#4をスクロールの内側に追加することで、#4を答えてください。私はそれをScrollMainViewと呼んだ。ストーリーボードでは、スーパービューを埋めるために、先頭、末尾、上端と下端を設定しました。スクロールビューではなく、スクロールビューではなくループにこれらの要素を追加しました。 今、スクロールはスクロールしません!私のコードと、このような最終的な表示を見て:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var ParentView: UIView!
@IBOutlet weak var ScrollView: UIScrollView!
@IBOutlet weak var ScrollMainView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
let photos = ["joe", "john"]
let userNames = ["joe", "john"]
self.ScrollView.frame = CGRectMake(0, 0, self.ParentView.frame.size.width, self.ParentView.frame.size.height)
self.ScrollView.contentSize = CGSizeMake(self.ParentView.frame.size.width * CGFloat(photos.count), self.ParentView.frame.size.height)
self.ScrollView.pagingEnabled = true
self.ScrollMainView.frame = CGRectMake(0, 0, self.ScrollView.frame.size.width, self.ScrollView.frame.size.height)
print("the frame for parentview is: \(self.ParentView.frame)")
var i: Int = 0
while i < 2 {
if let userXib = NSBundle.mainBundle().loadNibNamed("User", owner: self, options: nil)[0] as? User {
userXib.frame = CGRect(x: self.ScrollMainView.frame.size.width * CGFloat(i), y: 0, width: self.ScrollMainView.frame.size.width, height: userXib.frame.size.height)
userXib.assignValues(photos[i], myName: userNames[i])
self.ScrollMainView.addSubview(userXib)
}
i = i + 1
}
self.ScrollView.addSubview(ScrollMainView)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
にコードを置くことができますすることができますスクロールビューのレイアウトは、私に多くの白髪を与えました。残念ながら、私はXamarin/C#を使用していますが、Swiftは使用していません。したがって私は、プログラムレイアウトと、Cirrious.Fluentlayoutという優れたパッケージ/ライブラリを使用することで、私の問題を解決しました。私はすべての問題を一挙に解決し、とても使いやすいものでした。それはあなたからすべてのレイアウト混乱を隠します。 – Marakai