Trong ví dụ this.Hoạt ảnh khung UIView, chế độ xem phụ UIScrollView không phải lúc nào cũng hoạt ảnh
Tôi đang tạo hoạt ảnh cho khung của PhotoViewerViewController khi tôi tạo hiệu ứng cho tabBarController (để có hiệu ứng toàn màn hình). PhotoViewer sử dụng uiscrollview để tạo ra cùng một loại hiệu ứng ứng dụng ảnh của Apple. Vì lý do gì đó đôi khi nó hoạt hình cùng với khung PhotoViewer của tôi, và đôi khi nó không.
Bạn có thể thấy trong ví dụ đầu tiên nó nhảy khi tăng kích thước khung hình nhưng hoạt ảnh độc đáo khi giảm kích thước khung hình (và khôi phục thanh tab).
Tuy nhiên, trong ví dụ this khi ảnh ở dọc, nó nhảy theo cả hai hướng.
Trong cả hai trường hợp, nếu tôi phóng to ảnh toàn cảnh bằng chế độ xem cuộn, nó sẽ hoạt ảnh chính xác theo cả hai hướng.
Tôi biết bằng chứng là có, nhưng tôi không thể đặt ngón tay của mình vào những gì đang xảy ra ở đây.
Dưới đây là khối hoạt hình của tôi:
void (^updateProperties) (void) =^{
self.navigationController.navigationBar.alpha = hidden ? 0.0f : 1.0f;
self.navigationController.toolbar.alpha = hidden ? 0.0f : 1.0f;
if (self.tabBarController) {
int height = self.tabBarController.tabBar.bounds.size.height;
for(UIView *view in self.tabBarController.view.subviews)
{
int newHeight;
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
if (UIInterfaceOrientationIsPortrait(orientation)) {
newHeight = hidden ? [[UIScreen mainScreen] bounds].size.height : [[UIScreen mainScreen] bounds].size.height - height;
} else {
newHeight = hidden ? [[UIScreen mainScreen] bounds].size.width : [[UIScreen mainScreen] bounds].size.width - height;
}
if([view isKindOfClass:[UITabBar class]])
{
[view setFrame:CGRectMake(view.frame.origin.x, newHeight, view.frame.size.width, view.frame.size.height)];
}
else
{
CGRect newFrame = CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, newHeight);
[view setFrame:newFrame];
// update our VC frame with animation
[self.view setFrame:newFrame];
}
}
}
};
Mã chuyển thể từ một bài đăng trên SO: UITabBar wont hide
nguồn đầy đủ về github.
Cảm ơn. Cái thứ hai không hiệu quả, nhưng tôi sẽ đi với cái cũ. –
Trong khi tôi chưa giải quyết nó, tôi nghĩ bạn đã chỉ cho tôi đúng hướng. Tôi không chắc chắn nếu biến đổi cụ thể này đang được kích hoạt trên chính PhotoImageView, hoặc cuộn có chứa nó. –
Cá nhân tôi sẽ di chuyển tất cả logic để căn giữa nội dung của scrollview cho chính lớp con scrollview. Ở đó, bạn có thể ghi đè lên -setContentOffset: để thực hiện bố cục thay vì sử dụng các phương thức ủy quyền thu phóng. – hatfinch