2017-03-13 3 views
0

下の画像に従って、埋め込まれたUITextViewを持つカスタムコントロールがその境界から飛び出します。私は境界線などに無駄にクリップを適用しようとしました。おそらく、カスタムコントロールを確立するときには単純なものでしょう。Stackviewセルの境界を超えているカスタムコントロール

ここにViewControllerのコードを示します。

enter image description here

import UIKit 

class ViewController: UIViewController { 
@IBOutlet weak var textStackView: UIStackView! 
@IBOutlet weak var tabStackView: UIStackView! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    addButtons() 
    addTextViews() 
} 

func addButtons(){ 
    var count = 0 
    while (count <= 10){ 
     let btn = UIButton() 
     btn.backgroundColor = UIColor.gray 
     btn.setTitle("Btn \(count)", for: .normal) 
     tabStackView.addArrangedSubview(btn) 
     count += 1 
    } 
} 

func addTextViews(){ 

    var count = 0 
    while (count <= 5){ 

     if (count == 0){ 
      let textView = CustomView() 
      textView.layer.borderColor = UIColor.green.cgColor //Green border 
      textView.layer.borderWidth = 1 
      textView.embededTextView.text = "Some sample text here. Some sample text here. Some sample text here. Some sample text here. Some sample text here." 
      //textView.sizeToFit() //Does nothing 
      //textView.clipsToBounds = true //Doesnt prevent overflow 
      textStackView.addArrangedSubview(textView) 
     } 
     else{ 
      let textView = UITextView() 
      textView.layer.borderColor = UIColor.black.cgColor 
      textView.layer.borderWidth = 1 
      textView.text = "Some sample text here. Some sample text here. Some sample text here. Some sample text here. Some sample text here." 
      textStackView.addArrangedSubview(textView) 
     } 
     count += 1 
    } 
} 
} 

とカスタムコントロール

import UIKit 

class CustomView: UIView { 

@IBOutlet var view: UIView! 
@IBOutlet weak var embededTextView: UITextView! 

required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 
    Bundle.main.loadNibNamed("CustomView", owner: self, options: nil) 
    self.addSubview(self.view) 
} 

override init(frame: CGRect){ 
    super.init(frame: frame) 
    Bundle.main.loadNibNamed("CustomView", owner: self, options: nil) 
    self.addSubview(self.view) 
    view.layer.borderWidth = 4 
    view.layer.borderColor = UIColor.red.cgColor 
    //view.sizeToFit() 
} 
} 
+0

ビューをスタックビューに追加する方法を確認してください。あなたは、期待される出力が図の形で何であるかを見せてください。 – user1046037

+0

目的はオーバーフローを持たないことでした。以下の「view.frame = self.bounds」の答えを参照してください。ありがとう –

答えて

0

を次のように 結果が欠落していた何である

view.frame = self.bounds

ました

override init(frame: CGRect){ 
    super.init(frame: frame) 
    Bundle.main.loadNibNamed("CustomView", owner: self, options: nil) 
    view.frame = self.bounds 
    view.layer.borderWidth = 4 
    view.layer.borderColor = UIColor.red.cgColor 
    self.addSubview(self.view) 
} 
関連する問題