-
Notifications
You must be signed in to change notification settings - Fork 144
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix wrap content calculation by filter hidden views #280
base: master
Are you sure you want to change the base?
Conversation
Sources/PinLayout+WrapContent.swift
Outdated
let subviews: [PinView.PinView] | ||
switch viewFilter { | ||
case .visibleOnly: | ||
subviews = view.subviews.filter { !$0.isHidden } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What about views with alpha = 0
?
There is public visible(_ views: [UIView])
views filter that takes alpha into account -
PinLayout/Sources/Filters.swift
Line 25 in babea9c
return views.filter({ !$0.isHidden && $0.alpha > 0 }) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good point, you could use the visible()
here to filter views.
Sources/PinLayout+WrapContent.swift
Outdated
} | ||
|
||
private func wrapContent(_ type: WrapType, padding: PEdgeInsets, _ context: Context) -> PinLayout { | ||
let subviews = view.subviews | ||
private func wrapContent(_ type: WrapType, padding: PEdgeInsets, viewFilter: ViewFilter = .none, _ context: Context) -> PinLayout { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
do we need default argument value (viewFilter = .none
) in private function?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not needed here, the parameter should always be specified by callers
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Excellent. Could you update the documentation of wrapContent
(README.md)? 🙏
Sources/PinLayout+WrapContent.swift
Outdated
let subviews: [PinView.PinView] | ||
switch viewFilter { | ||
case .visibleOnly: | ||
subviews = view.subviews.filter { !$0.isHidden } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good point, you could use the visible()
here to filter views.
@@ -33,6 +33,10 @@ extension NSView: Layoutable { | |||
return PinLayout(view: self, keepTransform: false) | |||
} | |||
|
|||
public var isVisible: Bool { | |||
!isHidden && alphaValue > 0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
!isHidden && alphaValue > 0 | |
return !isHidden && alphaValue > 0 |
@@ -37,6 +37,10 @@ extension UIView: Layoutable, SizeCalculable { | |||
return PinLayoutObjCImpl(view: self, keepTransform: true) | |||
} | |||
|
|||
public var isVisible: Bool { | |||
!isHidden && alpha > 0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
!isHidden && alpha > 0 | |
return !isHidden && alpha > 0 |
bump |
Force rebuild
No description provided.