Post

Replies

Boosts

Views

Activity

Reply to How to animate `UIHostingController.view` frame when my View's size changes?
@DTS Engineer I am expecting the part on the left, in SwiftUI to animate exactly like the counterpart in UIKit on the right. But they do not; UIKit animation affects both UIView.center and UIView.bounds, and they travel using the same timing curve over the same duration, which makes it seem that the top of the UIKit view is attached to the top of the screen. However, this illusion is not preserved for SwiftUI view because UIHostingController.view.center is not animated; it's teleported to the end position. And I also happen to know that really bounds are not animated either, the UIView actually just fully teleports to the new state, while only the SwiftUI content is animated. And my question is - what is the way to make UIHostingController animate along its SwiftUI content? Can you maybe confirm that there isn't a built-in support for that?
Topic: UI Frameworks SubTopic: SwiftUI Tags:
12h
Reply to App Startup with Debugger in Xcode 26 is slow
I have attempted to use Xcode 26.2 with a device running iOS 26.2, same configuration as in the original post, and I don't find the user experience to have improved one bit: app startup takes ages before I even see my UIWindow and UIViewController on screen starting without debugger and attaching afterwards causes the app to lag horribly, which was not a problem originally when I only started to try Xcode 26.0
5d
Reply to How to animate `UIHostingController.view` frame when my View's size changes?
Alright, I have tried to follow your advice and I don't see how this can help. I have this setup: struct AnimatedView: View { @ObservedObject var viewModel: ViewModel var body: some View { let width = viewModel.isExpanded ? 120.0 : 50.0 let height = viewModel.isExpanded ? 400.0 : 100.0 let cornerRadius = viewModel.isExpanded ? 42.0 : 8.0 Color(uiColor: .red) .frame(width: width, height: height) .cornerRadius(cornerRadius) } } The hosting controller is mounted to the top of its parent via constraints. Then I do this in my tap handler for a totally separate button: @objc func tap() { withAnimation(Animation.easeInOut(duration: 0.5), { viewModel.isExpanded.toggle() }) } And what I observe here is that my hosting controller's view immediately teleports to the new frame - its center is immediately in the position where it should be only at the end of the animation. Meanwhile, the SwiftUI content is animating correctly, except it has already teleported. I have tried to use your answer @DTS Engineer I have assigned hostingController.sizingOptions = [.intrinsicContentSize, .preferredContentSize] and added a KVO observation to the \.preferredContentSize. observation = hostingController.observe( \.preferredContentSize, options: [.new] ) { [weak self] controller, change in guard let self else { return } UIView.animate( withDuration: 0.5, delay: 0, options: [.curveEaseInOut], animations: { self.view.layoutIfNeeded() }) } Because my UIHostingController is laid out via constraints, I don't see what else I can do to animate the content other than to ask for a relayout on the parent. This however, doesn't work. Also, in the KVO handler of the preferredContentSize, I have found that when the closure is called, the center value has already been set to the final value! So even if I launch UIView.animate, there will be no frame updates in the animation transaction, and nothing will be animated. You can see the problem I am describing in this video: https://github.com/user-attachments/assets/bb7c9d7c-ef6a-47d9-85fd-27fcc6f12b13 So I don't think that your answer answers my question. And I would like to inquire once again - what is the correct canonical way to animate the UIHostingController changing its position along with the SwiftUI animation?
Topic: UI Frameworks SubTopic: SwiftUI Tags:
2w
Reply to CollectionView: Sync `center.y` of UIView outside collection view and a view in a cellinside
how to animate self sizing cell size change due relayout? Turns out: collectionView.performBatchUpdates { UIView.animate(withDuration: 0.25, animations: { cellViewReference.updateState(state: state, animated: false) cellViewReference.layoutIfNeeded() }) collectionView.collectionViewLayout.invalidateLayout() } how to synchronize outside views with collection views? Just don't, it doesn't end well...
Topic: UI Frameworks SubTopic: UIKit Tags:
Feb ’25
Reply to Xcode is crashing on startup. Any workarounds?
I have figured the work around for this back in December already - in it I would open another Xcode project and then with the project window open, I would open the needed project with File - Open Recent. Here's a funny thing: today, that OTHER project has stopped opening too. Amazing. Now I'm using a third, different project, and apparently I'm running out, but statistically, I'll lose access to all of them only by 2023. Amazing.
Mar ’21