Tôi có một NSImageView tải một hình ảnh từ gói ứng dụng.Thay đổi kích thước NSImageView không vẽ lại
Nó được thiết lập như vậy:
coverImage.image = [NSImage imageNamed:@"themeSignEnd.png"];
coverImage.imageScaling = NSImageScaleNone;
coverImage.imageAlignment = NSImageAlignLeft;
Các hiển thị hình ảnh tốt.
Kích thước của NSImageView được tính toán dựa trên một số yếu tố khác và sau đó thiết lập sử dụng mã này:
coverImage.frame = CGRectMake((1280 - 869)/2, 0, 869 * percentage, 800);
này hoạt động hoàn toàn tốt đẹp lần đầu tiên nó được thực hiện (khi ra mắt ứng dụng).
NSImageView có kích thước và hình ảnh chứa được cắt ở đường viền thích hợp.
Thật không may, khi tôi cố gắng thay đổi kích thước NSImageView trong khi ứng dụng đang chạy (sử dụng cùng một mã ở trên), nó sẽ không cập nhật rõ ràng.
NSLogging coverImage.frame
cho biết rằng chính khung được cập nhật chính xác. Tuy nhiên, chế độ xem có vẻ không được vẽ lại - không phải khi thu nhỏ cũng như khi phát triển khung. Ngoài ra, khi tôi thoát và khởi động lại ứng dụng, NSImageView vẽ đường viền chính xác.
Điều gì có thể gây ra hành vi như vậy?
Có thể NSImageView đơn giản không được vẽ lại? Nếu vậy, làm thế nào tôi có thể buộc vẽ lại?
Có bất kỳ quirks nào khác của NSImageView mà tôi đã bỏ lỡ có thể dẫn đến hành vi này không?
chỉnh sửa:
Hóa ra lỗi này chỉ xảy ra khi tài sản ImageFrameStyle
được thiết lập để NSImageFrameNone
. Nếu khung được đặt thành bất kỳ thứ gì khác, nó sẽ được vẽ lại tốt. Thật không may, chúng tôi cần hình ảnh được hiển thị mà không có khung.
Có sự khác biệt nào về hiển thị cho NSImageViews có và không có khung có thể giải thích điều này không?
Bạn đang cập nhật khung của khung nhìn từ chuỗi chính? –
@Rob -> Có, tôi. – 0x90
Tôi ước có một giải pháp cho việc này. Nếu bạn đã khám phá bất kỳ điều gì mới, vui lòng đăng nó. Thay đổi kiểu khung không có hiệu lực đối với tôi. Thật thú vị, thay đổi kích thước lớn hơn sẽ vẫn vẽ hình ảnh của tôi và cập nhật nó. Nếu tôi đổi kích thước nhỏ hơn, nó sẽ ngừng cập nhật. – spartygw