weixin_55402435 2025-03-22 01:17 采纳率: 0%
浏览 7

objc如何控制app 窗口大小的宽高比

最近在学习objc想要实现一个按照一定宽高比去制作一个macOS app。当我的拖拽变成成对应的宽高比

  • 写回答

4条回答 默认 最新

  • 道友老李 JWE233286一种基于机器视觉的水表指针读数识别及修正的方法 专利发明者 2025-03-22 01:23
    关注
    让【道友老李】来帮你解答,本回答参考gpt编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
    如果答案让您满意,请采纳、关注,非常感谢!
    你想要实现的功能是根据指定的宽高比,调整拖拽元素的大小。你可以通过监听拖拽事件,计算出对应的宽高比,然后根据计算出的比例调整元素的大小。 以下是一个简单的示例代码,演示了如何根据指定的宽高比调整拖拽元素的大小:
    // 在ViewController.m文件中实现以下代码
    #import "ViewController.h"
    @interface ViewController () <NSDraggingDestination>
    @property (weak) IBOutlet NSView *draggingView; // 拖拽元素的View
    @property (assign) CGFloat aspectRatio; // 宽高比
    @end
    @implementation ViewController
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        // 设置代理为自身
        [self.draggingView registerForDraggedTypes:@[NSPasteboardTypeFileURL]];
        self.draggingView.delegate = self;
        
        // 设置宽高比
        self.aspectRatio = 16.0 / 9.0; // 可根据需要修改
        
    }
    // 拖拽事件相关方法
    - (NSDragOperation)draggingEntered:(id<NSDraggingInfo>)sender {
        return NSDragOperationCopy;
    }
    - (BOOL)prepareForDragOperation:(id<NSDraggingInfo>)sender {
        return YES;
    }
    - (BOOL)performDragOperation:(id<NSDraggingInfo>)sender {
        NSPasteboard *pboard = [sender draggingPasteboard];
        NSArray *urls = [pboard readObjectsForClasses:@[[NSURL class]] options:nil];
        
        if (urls.count > 0) {
            NSURL *fileURL = urls.firstObject;
            // TODO: 根据文件URL获取图片并设置到拖拽View中
            
            // 根据宽高比调整拖拽View的大小
            NSRect frame = self.draggingView.frame;
            if (frame.size.width / frame.size.height > self.aspectRatio) {
                frame.size.height = frame.size.width / self.aspectRatio;
            } else {
                frame.size.width = frame.size.height * self.aspectRatio;
            }
            self.draggingView.frame = frame;
            
            return YES;
        }
        
        return NO;
    }
    @end
    

    这段代码假设你有一个名为draggingView的NSView,你可以拖拽文件到这个View上,根据文件的URL获取对应的图片,并根据指定的宽高比调整拖拽View的大小。你可以根据实际需求修改代码逻辑。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月22日