0
スーパービューが隠されていてもUIViewの「隠れた」プロパティは「偽」です。スーパービューが隠されていても、UIViewの隠しプロパティはfalseです。
ツリーを登ることなくUIViewが非表示になっているかどうかを知る方法はありますか?
例:
(lldb) po 0x7ffba8120f40
<UIButtonLabel: 0x7ffba8120f40; frame = (0 6; 25 18); text = ' All'; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x7ffba8121160>>
(lldb) p (BOOL)[0x7ffba8120f40 isHidden]
(BOOL) $605 = NO
(lldb) po [0x7ffba8120f40 superview]
<UIButton: 0x7ffba811ffd0; frame = (0 15; 100 30); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x7ffba811d200>>
(lldb) p (BOOL)[0x7ffba8120f40 isHidden]
(BOOL) $607 = NO
(lldb) po [0x7ffba8120f40 superview]
<UIButton: 0x7ffba811ffd0; frame = (0 15; 100 30); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x7ffba811d200>>
(lldb) p (BOOL)[0x7ffba811ffd0 isHidden]
(BOOL) $612 = NO
(lldb) po [0x7ffba811ffd0 superview]
<UIView: 0x7ffba811fe60; frame = (16 20; 110 60); autoresize = RM+BM; layer = <CALayer: 0x7ffba811d1e0>>
(lldb) p (BOOL)[0x7ffba811fe60 isHidden]
(BOOL) $614 = NO
(lldb) po [0x7ffba811fe60 superview]
<InsertViewer.ExploreHeader: 0x7ffba4de2f40; baseClass = UICollectionReusableView; frame = (-8 -20; 375 100); clipsToBounds = YES; hidden = YES; opaque = NO; layer = <CALayer: 0x7ffba811ddd0>>
(lldb) p (BOOL)[0x7ffba4de2f40 isHidden]
>>>>>>>>>>>>>>>>>>>(BOOL) $618 = YES <<<<<<<<<<<<<<<<<<<<
私は、隠れた祖先のためにビューが隠されていることを知ることをより心配しています。私は、ビューの隠しプロパティをテストするのではなく、完全なスーパービューパスをチェックすることに頼った。厄介ですが動作します –
ビューが隠されている場合、またはチェーン上のスーパービューのいずれかが非表示になっている場合、TRUEを返すメソッドhiddenBySuperviewを使用して、UIViewの拡張機能を作成できます。 (ビューにスーパービューがない場合には、コードを記述してください。その場合、メソッドはそれ自身の隠しフラグを返します)。 –