Trong ứng dụng của tôi, tôi đang cố gắng đưa một khung nhìn lên phía trước, sau đó đặt nó trở lại vị trí lớp ban đầu của nó sau này. Mã này nên được khá đơn giản:Sắp xếp lại các bản tóm tắt của UIView
Để đưa subview phía trước (bên trong lớp UIView tùy chỉnh của tôi):
[self.superview bringSubviewToFront:self];
dễ dàng. Tôi lưu trữ vị trí z ban đầu trong một biến mẫu được gọi là, bạn đoán nó, zPosition
. Vì vậy, dòng trước -bringSubviewToFront:
là:
zPosition = [self.superview.subviews indexOfObject:self];
Vì vậy, tất cả các mã tôi sử dụng để mang lại subview của tôi để phía trước là:
zPosition = [self.superview.subviews indexOfObject:self];
[self.superview bringSubviewToFront:self];
này hoạt động như mong muốn. Vấn đề là khi tôi cố gắng đưa subview trở lại nơi nó được. Tôi chỉ đơn giản là làm điều này:
[self.superview exchangeSubviewAtIndex:zPosition withSubviewAtIndex:
[self.superview.subviews indexOfObject:self]];
Sử dụng mã này, nếu tôi có hai subviews, đây là những gì sẽ xảy ra:
Hãy nói rằng tôi có cái nhìn A và B. xem Xem A là trên quan điểm B. Tôi bấm vào xem B, nó đi ra phía trước. Tôi chạm vào xem B một lần nữa (nó sẽ quay trở lại nơi nó đã được), và không có gì xảy ra, do đó, nó bây giờ trên xem A. Nếu bây giờ tôi nhấn xem A, nó đến phía trước, nhưng khi tôi khai thác nó một lần nữa (vì vậy nó nên quay trở lại vị trí ban đầu của nó z: dưới xem B), tất cả các quan điểm anh chị em của nó biến mất!
Có ai thấy điều gì có thể gây ra sự cố này không?
lẽ bạn có thể bắt đầu với một hình nộm, subview trống trên đầu. Sau đó, bạn trao đổi qua lại với subview đó. Không phải là thanh lịch nhất, tôi biết ... –