#include using namespace NXKit; std::shared_ptr UIImageView::init() { return new_shared(); } UIImageView::UIImageView(std::shared_ptr image): UIImageView(NXRect()) { _image = image; updateTextureFromImage(); } UIImageView::UIImageView(NXRect frame): UIView(frame) { setUserInteractionEnabled(false); } void UIImageView::setImage(std::shared_ptr image) { if (image == _image) { return; } _image = image; updateTextureFromImage(); // setNeedsLayout(); } void UIImageView::updateTextureFromImage() { if (_image) { // _image->cgImage() layer()->setContentsTemplateMode(_image->_isTemplate); layer()->setContents(_image->cgImage()); layer()->setContentsScale(_image->scale()); auto bounds = this->bounds(); bounds.size = _image->size(); setBounds(bounds); } else { layer()->setContents(nullptr); layer()->setContentsScale(SkiaCtx::main()->getScaleFactor()); } } // void UIImageView::sizeToFit() { // UIView::sizeToFit(); // } NXSize UIImageView::sizeThatFits(NXSize size) { if (!_image) return UIView::sizeThatFits(size); return _image->size(); } // bool UIImageView::applyXMLAttribute(std::string name, std::string value) { // if (UIView::applyXMLAttribute(name, value)) return true; // REGISTER_XIB_ATTRIBUTE(image, valueToImage, setImage) // return false; // }