誰かがラベルを隠す簡単な方法を知っていて、画面の他のビューに空白のままの場所を使用させることはできますか?そして、その視点を見せて逆にする。レイヤーの場合、AndroidのようなものsetVisibility = GONEどのように可視性を設定するIOSのアンドロイドのようにGONE?
私が知る限り、setHidden = trueを使用すると、画面からの表示は非表示になりますが、周囲のものは並べ替えられません。
はyoueアプリは、IOS 9以上をサポートしている場合は、誰かがラベルを隠す簡単な方法を知っていて、画面の他のビューに空白のままの場所を使用させることはできますか?そして、その視点を見せて逆にする。レイヤーの場合、AndroidのようなものsetVisibility = GONEどのように可視性を設定するIOSのアンドロイドのようにGONE?
私が知る限り、setHidden = trueを使用すると、画面からの表示は非表示になりますが、周囲のものは並べ替えられません。
はyoueアプリは、IOS 9以上をサポートしている場合は、よりも、唯一の方法を非表示にしたいのであればビュー
のための高さ拘束を追加する必要がありますよりも8アプリのサポートIOSの場合iOSのアンドロイド.GONE機能を実現するためには、動的にスタックビューのコンテンツTを変更するApples documentation
経由UIStackView
を使用することですスタックビュー は、ビューが追加、削除、またはがalignedSubviews配列に挿入されたとき、またはサブビューの非表示プロパティが変更されたときに自動的にそのレイアウトを更新します。
SWIFT 3:
// Appears to remove the first arranged view from the stack. // The view is still inside the stack, it's just no longer visible, and no longer contributes to the layout. let firstView = stackView.arrangedSubviews[0] firstView.hidden = true
はSWIFT 4:
let firstView = stackView.arrangedSubviews[0] firstView.isHidden = true
ありがとうそれは完全に動作する答え@Fonix –
完璧な答え。 –
あなたはUIStackViewを使用することができますありがとうございました。
が、あなたは自動レイアウトを使用して、それをachiveし、あなただけの設定の高さの制約値を0
あなたは簡単に自動レイアウトの制約を使用してこれを達成することができます。
+-----+
| A |
+-----+
+-----+
| B |
+-----+
+-----+
| C |
+-----+
、あなたは、ビューBは、いくつかのケースで消えるようにしたい:
は、あなたがこのような3つのビューがあるとします。次のように
は(これらは単なる例の値です)制約を設定します。
B top space to A: 4
C top space to B: 4
B height: 20
次にBの高さのために、あなたのコード内でNSLayoutConstraintアウトレットを作成します。これを行うには、IBの制約をドラッグアンドドロップします。最後に
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *bHeight;
、ビューが消えるように、単に次の操作を行います。あなたはテーブルビューのセルのためにこれをやっている場合、あなたはBの中で表示する例を有することができること
self.bHeight = 0;
注意をいくつかの細胞が、他の細胞には存在しない。
この場合、表示させたいセルの高さを「通常」の値にリセットする必要があります。
self.bHeight = 24;
私は単純な解決策を探していました。私はUIStackViewを使用したり、コンセントを制約のために作成したりする必要はありません。ただ、この使用:今
class GoneConstraint {
private var constraint: NSLayoutConstraint
private let prevConstant: CGFloat
init(constraint: NSLayoutConstraint) {
self.constraint = constraint
self.prevConstant = constraint.constant
}
func revert() {
self.constraint.constant = self.prevConstant
}
}
fileprivate struct AssociatedKeys {
static var widthGoneConstraint: UInt8 = 0
static var heightGoneConstraint: UInt8 = 0
}
@IBDesignable
extension UIView {
@IBInspectable
var gone: Bool {
get {
return !self.isHidden
}
set {
update(gone: newValue)
}
}
weak var widthConstraint: GoneConstraint? {
get {
return objc_getAssociatedObject(self, &AssociatedKeys.heightGoneConstraint) as? GoneConstraint
}
set(newValue) {
objc_setAssociatedObject(self, &AssociatedKeys.widthGoneConstraint, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}
}
weak var heightConstraint: GoneConstraint? {
get {
return objc_getAssociatedObject(self, &AssociatedKeys.heightGoneConstraint) as? GoneConstraint
}
set(newValue) {
objc_setAssociatedObject(self, &AssociatedKeys.heightGoneConstraint, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}
}
private func update(gone: Bool) {
isHidden = gone
if gone {
for constr in self.constraints {
if constr.firstAttribute == NSLayoutAttribute.width {
self.widthConstraint = GoneConstraint(constraint: constr)
}
if constr.firstAttribute == NSLayoutAttribute.height {
self.heightConstraint = GoneConstraint(constraint: constr)
}
constr.constant = 0
}
} else {
widthConstraint?.revert()
heightConstraint?.revert()
}
}
}
を、あなたはview.gone = true
を呼び出すことができますし、それはそれです。
があります動的にテーブルヘッダービューを設定しますか? –
@siddharth shah私はこれをテストしなかった。 –
ok、問題はありません私はあなたに答えてくださいBtwありがとう@ダニエルQ –
あなたはUOSでこれを行うことはできませんが、あなたはUIStackViewを使用している場合は – Fonix
UIStackViewを使用していますか? @Fonix –
これについての参照コードがあればコメントしてください –