2010-01-11 24 views
7

Tôi có một vấn đề nhỏ mà tôi không thể giải quyết được. Tôi thực sự hy vọng ai đó có thể giúp tôi với điều đó. Tôi muốn thay đổi kích thước xem bức ảnh ấn tượng và đặt nó ở trung tâm, sử dụng đoạn mã sau đây:Chế độ xem máy ảnh iPhone được chia tỷ lệ ở chính giữa, "CGAffineTransformTranslate" không hoạt động

picker.cameraViewTransform = CGAffineTransformScale(picker.cameraViewTransform, 0.5, 0.56206); 
    picker.cameraViewTransform = CGAffineTransformTranslate(picker.cameraViewTransform, 80, 120); 

Nhưng tất cả tôi nhận được một quy mô 1/2 xem kích thước phía trên bên trái của màn hình. Có vẻ như "CGAffineTransformTranslate" không làm gì cả. Bản dịch không hoạt động ngay cả khi tôi đã sử dụng:

 picker.cameraViewTransform = CGAffineTransformMake(1, 0, 0, 1, 80, 120); 

Phần dịch dường như không ảnh hưởng đến chế độ xem máy ảnh trực tiếp. Hy vọng ai đó có thể khai sáng cho tôi.

Cảm ơn.

+0

Tôi thấy cùng một hành vi. –

+0

Tôi cũng thế. Không biết giải pháp. – Eonil

+0

Điều này dường như được sửa trong iOS mới hơn. Tôi không chắc chắn khi họ vá nó. – sffc

Trả lời

1

Tôi đã đập đầu vào cùng một vấn đề. Tôi đã xác nhận rằng việc chia tỷ lệ và xoay bản xem trước hoạt động, nhưng các bản dịch dường như bị bỏ qua. Tôi sẽ suy đoán rằng các phần tx, ty của CGAffineTransform đang bị bỏ qua khi biến đổi được thiết lập. Đây là với hệ điều hành iPhone v3.1.2. Tôi không có các phiên bản hệ điều hành khác để kiểm tra ngay bây giờ.

-1

Tôi đã nhận được giải pháp. Nó phải được đặt trên thông điệp:

- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated 

Mẫu mã:

#pragma mark - 
#pragma mark UINavigationControllerDelegate 
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
{ 
    CGFloat width = [[self view] bounds].size.width; 
    CGFloat height = width/4*3; 
    CGSize sizeOfCamera = CGSizeMake(width, height); 
    CGAffineTransform t = CGAffineTransformMakeScale(0.5, 0.5); 
    [picker setCameraViewTransform:t]; 

    // Now the image is automatically aligned to center. 
    // Translation matrix also can be applied, but didn't use because it's already aligned to center. 
} 
+2

Bạn chắc chắn có thể _try_ để thêm bản dịch, nhưng nó sẽ bị bỏ qua, giống như trong câu hỏi gốc. – macserv

5

tôi là trong cùng một thuyền. Những gì tôi đã làm là di chuyển khung chọn.

[picker.view setFrame:CGRectMake(xOffset,yOffset,picker.view.frame.size.width,picker.view.frame.size.height)]; 
Các vấn đề liên quan