objective-c – 如何在NSTextView中均匀地扩展丰富的文本?

objective-c – 如何在NSTextView中均匀地扩展丰富的文本?,第1张

概述语境: 我有一个普通的基于文档的Cocoa Mac OS X应用程序,它使用NSTextView进行富文本输入.用户可以在NSTextView中编辑文本的字体,点大小和颜色. 基本SDK:10.7 部署目标:10.6 题: 我想在用户编辑文本时以编程方式(包括NSTextView)实现整个UI的缩放.缩放NSTextView的框架是没有问题的.但是,我不知道如何在视图中缩放可编辑的文本,该文本可能 语境:

我有一个普通的基于文档的Cocoa Mac OS X应用程序,它使用NSTextVIEw进行富文本输入.用户可以在NSTextVIEw中编辑文本的字体,点大小和颜色.

基本SDK:10.7
部署目标:10.6

题:

我想在用户编辑文本时以编程方式(包括NSTextVIEw)实现整个UI的缩放.缩放NSTextVIEw的框架是没有问题的.但是,我不知道如何在视图中缩放可编辑的文本,该文本可能包含整个文本段落的不同子部分中的多个不同的点大小.

如何将均匀比例因子应用于NSTextVIEw中显示的富文本?

这应该能够很好地与“富文本”一起播放,从而保留用户的字体系列,颜色,特别是点大小(在文本的不同点可能不同),但是均匀/相对地缩放.

是否可以给我的基本SDK和部署目标?是否可能使用较新的Base SDK或Deployment目标?

解决方法 如果意图是缩放视图(而不是实际更改字符串中的属性),我建议使用scaleUnitSquaretoSize:方法:以及适用于滚动条行为的ScalingScrollVIEw(可用于TextEdit示例代码).

ScalingScrollVIEw的核心部分是:

- (voID)setScaleFactor:(CGfloat)newScaleFactor adjustPopup:(BOol)flag{CGfloat oldScaleFactor = scaleFactor;    if (scaleFactor != newScaleFactor)    {        NSSize curDocFrameSize,newDocBoundsSize;        NSVIEw *clipVIEw = [[self documentVIEw] supervIEw];        scaleFactor = newScaleFactor;        // Get the frame.  The frame must stay the same.        curDocFrameSize = [clipVIEw frame].size;        // The new bounds will be frame divIDed by scale factor        newDocBoundsSize.wIDth = curDocFrameSize.wIDth / scaleFactor;        newDocBoundsSize.height = curDocFrameSize.height / scaleFactor;    }    scaleFactor = newScaleFactor;    [scale_delegate scaleChanged:oldScaleFactor newScale:newScaleFactor]; }

scale_delegate是您的委托,可以调整您的NSTextVIEw对象:

- (voID) scaleChanged:(CGfloat)oldScale newScale:(CGfloat)newScale{    NSInteger     percent  = lroundf(newScale * 100);    CGfloat scaler = newScale / oldScale;       [textVIEw scaleUnitSquaretoSize:NSMakeSize(scaler,scaler)];    NSLayoutManager* lm = [textVIEw layoutManager];    NSTextContainer* tc = [textVIEw textContainer];    [lm ensureLayoutForTextContainer:tc];}

scaleUnitSquaretoSize:方法相对于其当前状态进行缩放,因此您可以跟踪缩放因子,然后将您的绝对比例请求(200%)转换为相对比例请求.

总结

以上是内存溢出为你收集整理的objective-c – 如何在NSTextView中均匀地扩展丰富的文本?全部内容,希望文章能够帮你解决objective-c – 如何在NSTextView中均匀地扩展丰富的文本?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1246139.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存