2013-04-16 37 views
24

Tôi có một bộ điều khiển xem trong bảng phân cảnh của mình với một số UIButtons. Một trong số đó kích hoạt một lớp AVFoundation camera xem trước hiển thị trong một lớp con:CALayer - Đặt lớp con dưới UIButtons bảng phân cảnh?

captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session]; 
captureVideoPreviewLayer.frame = self.view.bounds; 
[self.view.layer addSublayer:captureVideoPreviewLayer]; 

này hoạt động một cách chính xác, ngoại trừ một thực tế là lớp xem trước được trả lại trên đầu trang của các nút của tôi vì vậy mặc dù các nút vẫn còn nhấp được họ không có thể được nhìn thấy bởi người dùng. Có cách nào dễ dàng để đặt lớp con bên dưới các nút không? Hoặc một cách dễ dàng để nâng các nút lên trong lớp? Cảm ơn bạn rất nhiều!

Trả lời

43

Các lớp nút là tất cả các lớp con của các lớp của chế độ xem chính. Bạn sẽ cần đặt lớp xem trước của máy ảnh bên dưới các lớp của nút. Hãy thử điều này:

// put it behind all other subviews 
[self.view.layer insertSublayer:captureVideoPreviewLayer atIndex:0]; 

// or, put it underneath your buttons, as long as you know which one is the lowest subview 
[self.view.layer insertSublayer:captureVideoPreviewLayer below:lowestButtonView.layer]; 
+0

Người đầu tiên làm việc. Nhưng chỉ để tham khảo trong tương lai, làm cách nào để tìm ra tên của các nút mà các nút được bật? – golmschenk

+1

Nếu bạn đã thêm các nút trong Trình tạo giao diện, bạn nên kết nối chúng với IBOutlet cho các nút trong mã bộ điều khiển chế độ xem của bạn. Bằng cách đó bạn có tài sản cho họ. Hoặc, bạn có thể là thuộc tính ** tag ** trong IB và sau đó tìm chúng thông qua thẻ của nút xem. Đã làm điều đó trả lời câu hỏi của bạn? – stevekohls

+0

Tôi tìm thấy '' '[self.view.layer insertSublayer: captureVideoPreviewLayer bên dưới: lowButtonView.layer];' '' đang hoạt động tốt hơn cho trường hợp của tôi –

2

Chỉ cần thêm. Bạn có thể tăng bất kỳ lớp con UIView nào lên trên lớp bằng cách gọi Phương thức UIViewbringSubviewToFront.

[self.view bringSubviewToFront:self.desiredButton]; 
+0

Không hoạt động đối với tôi. Bạn đã thử à? – Jaybo