IKImageView 和滚动条

2023-12-10

我正在尝试使用苹果提供的 IKImageViewDemo (http://developer.apple.com/mac/library/samplecode/IKImageViewDemo/index.html)并且我正在尝试向其添加滚动条。我尝试过两件事:

1) 将 IKImageView 嵌入 ScrollView 中。这产生了各种奇怪的效果,比如图像不再位于它应该在的位置,并且滚动条似乎位于固定位置,无论窗口有多大(所以我可以缩小窗口并丢失滚动条,即使滚动视图设置为随窗口调整大小)

2)我在 openImageURL 方法的代码中添加了 [_imageView setHasHorizo​​ntalScrollers: YES] (和垂直)。这似乎什么也没做。

我错过了一些明显的东西吗?

另外:为什么

NSLog(@"scrollbar? H %d V %d hide %d", 
      _imageView.hasHorizontalScroller, 
      _imageView.hasVerticalScroller,
      _imageView.autohidesScrollers);

_imageView.hasHorizontalScroller = YES;
_imageView.hasVerticalScroller = YES;
_imageView.autohidesScrollers = YES;

NSLog(@"scrollbar? H %d V %d hide %d", 
      _imageView.hasHorizontalScroller, 
      _imageView.hasVerticalScroller,
      _imageView.autohidesScrollers);

give me:

scrollbar? H 0 V 0 hide 0
scrollbar? H 0 V 0 hide 0

?

另外:

同样为什么:

 BOOL b = _imageView.autohidesScrollers = YES;
 NSLog (@"b %d scrollers %d", b, _imageView.autohidesScrollers);

打印 b 1 滚动条 0 ?


IKImageViewDemo 中可能让您感兴趣的一件事是图像被缩放以适合windowDidResize:方法 ([_imageView zoomImageToFit: self]).

将 IKImageView 嵌入到 NSScrollView 中是正确的做法。为了让滚动条在调整窗口大小时跟随窗口,您需要在 Interface Builder 中调整弹簧和支柱(==自动调整大小掩码)。

附录:正如您所注意到的,Mac OS X 10.6 中存在一个错误,导致此功能无法正常工作。您可以通过子类化 NSScrollView 来解决该问题,如下所示:

@interface IKImageClipView : NSClipView
- (NSRect)docRect;
@end

@implementation ScrollViewWorkaround

- (void)reflectScrolledClipView:(NSClipView *)cView;
{
    NSView *_imageView = [self documentView];
    [super reflectScrolledClipView:cView];
    if ([_imageView isKindOfClass:[IKImageView class]] &&
         [[self contentView] isKindOfClass:[IKImageClipView class]] &&
         [[self contentView] respondsToSelector:@selector(docRect)]) {
        NSSize docSize = [(IKImageClipView *)[self contentView] docRect].size;
        NSSize scrollViewSize = [self contentSize];
        // NSLog(@"doc %@ scrollView %@", NSStringFromSize(docSize), NSStringFromSize(scrollViewSize));
        if (docSize.height > scrollViewSize.height || docSize.width > scrollViewSize.width)
         ((IKImageView *)_imageView).autohidesScrollers = NO;
        else
         ((IKImageView *)_imageView).autohidesScrollers = YES;
    }
}

@end

试试这个:

http://dl.dropbox.com/u/1583683/IKImageViewDemo.zip

它是带有滚动条和上述解决方法的 IKImageViewDemo 版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IKImageView 和滚动条 的相关文章

  • 使用 pip 安装软件包时出现“SSL 证书验证失败”

    我正在尝试使用 pip 安装适用于 python 的 Scrapy 包 以及其他包 我尝试使用 python 3 和 python 2 进行安装 我已经安装 升级了 setuptools 如下所示 pip3 install upgrade
  • macOS High Sierra 与 CAShapeLayers、NSImageView、NSTableView 冲突

    我已经更新到 macOS High Sierra 现在我的项目出现了意想不到的问题 这些问题以前在 macOS Sierra 中没有见过 我有自定义 NSImageView 并在其中拖放图像后NSImageView我可以使用在图像顶部绘制矩
  • FFmpeg iOS -> 输出文件无效

    我正在使用以下库将 mkv 转换为 mp4 https github com SterlingOnLoop FFmpegWrapper https github com SterlingOnLoop FFmpegWrapper void c
  • NSArray 查找一个或多个对象 - 最佳实践[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 解决方案 我已将 BlackRider 的答案标记为正确 因为它是最通用的 特别是对于复杂的比较 但是还有其他非常好的答案和评论 我鼓励任何有相
  • 在 Mac OS X 中使用命令行终止“loginwindow”进程

    到目前为止 我已经编写了以下 unix 命令 ps Ajc grep loginwindow cut c 16 20 sed s g 这会抓取 loginwindow 进程 使用 cut 和 sed 对其进行过滤 以返回 loginwind
  • Apple doc的GCD生产者-消费者解决方案错误?

    在 Apple 并发编程指南的 从线程迁移 部分中 有 改变生产者 消费者实施 http developer apple com library ios documentation General Conceptual Concurrenc
  • NSOpenPanel setAllowedFileTypes

    我有一个 NSOpenPanel 但我想让它只能选择 PDF 文件 我正在寻找类似的东西 NOT WORKING NSOpenPanel panel panel NSOpenPanel openPanel panel setFloating
  • 如何检测 UILabel 特定部分(子字符串)上的点击?

    我是 iOS 开发新手 我不知道这个问题是否已经被问过 我尝试在 stackoverflow 上搜索解决方案 但没有得到任何结果 问题 我有一个UILabel called myLabel与文字 点击此处继续 现在的问题是我想在用户仅点击
  • 断点在 xcode pod 文件中不起作用

    我有一个 xcode 项目 其中包含一些可可豆荚文件 当我在 cocoa pod 文件中放置断点时 调试器不会在这些断点处停止 为什么 有人对此有什么想法吗 我关注了 UdaySingh 的评论 它起作用了 我不确定他为什么没有发布答案 但
  • 在 Objective-c 中获取对象名称

    假设我有一个 Foo 类和该类 myFoo 的一个实例 Foo myFoo 是否有任何方法 dispalyFooObjectName 可以显示对象的名称 例如 NSLog i was called from s myFoo dispalyF
  • NSZombieEnabled 完全隐藏 EXC_BAD_ACCESS 错误

    因此 我有一个 UIView 的子类 当我经历一组特定的条件时 在 iPad 而不是 iPhone 或模拟器上运行 仅首次登录 它开始导致 EXC BAD ACCESS 错误 当 UIView 子类从池中自动释放时 即池正在释放 而不是当我
  • iOS:无法从 Swift 建立 RabbitMQ 连接

    我正在尝试从 Swift 连接 RabbitMQ 我已关注this https github com rabbitmq rabbitmq objc client 图书馆 创建 Pod 设置并进入工作区 已检查并核实 成功运行 viewDid
  • 使用 Titanium Mobile 编译应用程序后 JavaScript 代码会发生什么

    我从 appcelerator 安装了 Titanium 并构建了 KitchenSink 示例应用程序 一切正常 我只是想知道 javascript 代码最终在构建的应用程序中的位置 我用 grep 编辑了 Xcode 项目以及结果应用程
  • 如何在 Objective C 中将 html 数据转换为 PDF

    我想在 Objective C 中动态地将 html 转换为 pdf 转换它的最佳方法是什么 以便它保持与 html 相同的外观 提前致谢 Prasad UIGraphicsBeginPDFContextToFile https devel
  • @package 指令在 Objective-C 中起什么作用?

    有谁确切知道 package 指令在 Objective C 中的用途吗 我在 Stephen Kochan 的 Objective C 2 0 编程中唯一提到过它 package 对于 64 位图像 可以在实现该类的图像中的任何位置访问实
  • Objective C unicode 字符比较

    unicode 比较是如何编码的 我需要如下进行测试 检查字符串中的特定字母 下面的代码令人窒息 警告 指针和整数之间的比较 for charIndex 0 charIndex lt myString length charIndex un
  • 用于 iOS 搜索的 Facebook Graph API

    我尝试使用以下代码从 Graph API 中搜索地点 但没有成功 有人可以启发我的道路吗 如果我尝试发布链接 消息 照片 它会按预期工作 但是当尝试获取位置时 它总是失败并给我 The operation couldn t be compl
  • 创建 iPhone 与外部设备连接的硬件。阿杜伊诺?

    嗨 我需要创建一个简单的连接器 我想我可能需要创建一个arduino板 它将从应用程序中获取数据 然后将它们传输到外部设备 应用程序中有一个滑块可供用户调整 调整滑块时 应用程序只会将值从应用程序发送到我需要建立的连接 该连接将连接到外部设
  • OS X 终端上 Vim 开关的永久语法

    我使用终端来 vim 进入现有的和新的程序 我讨厌这样一个事实 我总是需要介入 syntax on在命令行上使语法变得丰富多彩 有谁知道如何确保我的终端始终以彩色语法启动 Put syntax on在你的 vimrc file
  • 将渐变应用于 UIImage - 如何消除颜色反转?

    我正在应用渐变UIImage 我希望它底部是黑色的 中间慢慢变成透明或浅灰色 基本上没问题 但我有一个问题 在这个渐变下 我的图像颜色在某些地方反转 这看起来很烦人 我该如何解决这个问题 为了您方便 我的方法如下 我尝试过选择不同的混合模式

随机推荐

  • 使用循环算法从多个列表中选择数据的有效方法

    我需要通过使用循环算法选择数据 从多个列表中创建一个包含所有其他列表的值的结果列表 list1 val1 1 val1 2 list2 val2 1 val2 2 list3 val3 1 val3 2 rr choosing result
  • 如何对包含 12 小时 (AM/PM) 格式的值的 Pandas 时间序列进行排序

    我正在使用 pandas 处理 csv 文件中的一些数据 我需要对 DataFrame 中的数据进行排序df按列MEETING START TIME 只是对时间进行排序 日期由另一个字段处理 但我得到的结果是 MEETING START T
  • HikariCP 包装器(线程安全)

    我正在学习使用HikariCP 我是java新手 我找到了一个包装器 但我认为它不是线程安全的 单例的实例是线程安全的 但不是方法getConnection 班级是这样的 public class HikariCPWrapper priva
  • 为什么“模块”对象不可调用? [复制]

    这个问题在这里已经有答案了 可能的重复 类型错误 模块 对象不可调用 这是我第一次尝试 Python 只是想在沉寂 10 年之后重拾基本的编程知识 这对我来说是一种新语言 Python 基本思想是一个微型战斗引擎 它决定更好的打击 接下来是
  • Android AudioRecord 初始化延迟

    这是我正在处理的相关代码的示例 AudioRecord recorder setupAudio recorder startRecording 设置音频方法 public AudioRecord setupAudio AudioRecord
  • 如何使用jqPagination

    请帮助我 我不知道如何使用jq分页 http beneverard github com jqPagination 我希望每个页面都有其他内容 例如 第 1 页 内容是一个段落 第 2 页是其他段落 我不想单击显示 隐藏来显示内容 谢谢你
  • javascript window.onload 事件正确用法

    我有这个循环代码来减少 Javascript 中的 DOM 调用 并重用它们 aarr for var z 1 z lt 10 z c z 1 aarr c document getElementById a z 我已经证明 如果代码在 D
  • PHPcurl_setopt() CURLOPT_PROGRESSFUNCTION

    我看到在curl setopt 文档您可以设置回调函数来显示curl exec的进度 回调函数如何使用就不多说了 有人知道吗 我只想输出已下载到 STDOUT 的文件的百分比 谢谢 这就是回调在 C 中的样子 typedef int cur
  • UDP 打洞主机特定故障

    我编写了一个设置点对点链接的程序 该程序可以在以下位置找到 http basyl co uk code punch doc files Readme txt html 分为两部分 运行在公共主机上的服务器 以及所需对等链路每一端使用的客户端
  • 如何使用谷歌脚本将详细信息表复制到另一个电子表格

    情况 我有一个包含 10 个工作表的电子表格 有 15 个用户登录并修改它 我只想从其他电子表格中复制 6 张表格 需要的脚本函数 该脚本应该将工作表复制到另一个特定的电子表格中 1 来源 XXXXXX 我只想从源将 Sheets1 2 3
  • 如何以编程方式用 CoreData 行填充 NSArrayController?

    经过几个小时 几天的搜索和深入研究示例项目后 我得出的结论是我需要问一下 如果我绑定 assetView IKImageBrowserView 直接到 IB 实例NSArrayController一切都很好 void awakeFromNi
  • 在 Perl 中成功匹配正则表达式后,如何访问捕获的子字符串?

    我正在 Perl 中搜索一个字符串并将其存储在另一个标量变量中 我想打印这个标量变量 下面的代码似乎不起作用 我不确定出了什么问题以及正确的解决方法是什么 为什么程序中不存在它却打印 1 正在运行的数据 DATA 13 E 0 496 gt
  • 在 MySQL 中按某些列排序以及按 rand() 排序

    是否可以按某些列以及 RAND 对结果集进行排序 例如 SELECT a b c FROM table ORDER BY a DESC RAND LIMIT 0 10 谢谢 你正在做的事情是有效的 它将按降序排列结果a但随机化关系的顺序 但
  • java.library.path 中缺少文件

    在从 openni 编译演示时 我偶然发现了这个错误 Exception in thread main java lang UnsatisfiedLinkError no OpenNI jni in java library path at
  • BASH:搜索字符串并准确显示子字符串在其中出现的确切次数

    我已经搜索遍了 但仍然找不到这个简单的答案 我确信这很容易 如果您知道如何完成此操作 请提供帮助 样本 txt 是 AAAAA 我想找到组合 AAA 发生的确切时间 如果你只是使用例如 grep o AAA sample txt wc l
  • 如何将此方法作为扩展方法添加到我的类的属性中?

    我有一个方法 我想将此方法作为扩展方法添加到我的类的属性中 该方法给出一个表达式作为输入参数 方法如下 public static string GetPropertyName
  • 修改 Google App Engine 端点 (Android) 中的 HTTP 标头

    我想将自定义标头添加到发送到端点的 HTTP 包中 我读到我可以在 Endpoint 方法中访问原始 HTTP 数据 通过添加 HttpServletRequest 参数 我正在寻找的是一种解决方案 或黑客 来访问和修改 Android 客
  • C:strtok_r的正确用法

    如何使用 strtok r 而不是 strtok 来执行此操作 char pchE strtok NULL 现在我正在尝试使用strtok r正确 但有时我会遇到问题strtol 我有一个线程 同时 执行 10 次 char savedEn
  • 修改传递给函数的列表切片

    是否可以将列表的切片传递到函数中并通过切片修改列表 这似乎不起作用 def foo a list a list 0 abc x 1 2 3 4 foo x 0 2 我希望 x 现在是 x abc 2 3 4 不 您所描述的意义上的 列表切片
  • IKImageView 和滚动条

    我正在尝试使用苹果提供的 IKImageViewDemo http developer apple com mac library samplecode IKImageViewDemo index html 并且我正在尝试向其添加滚动条 我