【问题标题】:How to set UISlider's MinimumTrackImage so that it won't strech?如何设置 UISlider 最小轨迹图像使其不会拉伸?
【发布时间】:2012-10-07 12:20:37
【问题描述】:

自从我更新了 XCode 后,我的 UISlider 上的 MinimumTrackImage 现在正在拉伸,而在它像我想要的那样剪裁之前。 MaximumTrackImage 的行为没有改变。

如何让MinimumTrackImage 不拉伸?请注意,我使用 ruby​​motion,但使用 obj-c 的解决方案也是可以接受的。

【问题讨论】:

    标签: iphone objective-c ruby uislider rubymotion


    【解决方案1】:

    我在这里猜测(你可以在 StackOverflow 上猜测,只要你诚实)... iOS6 有一个新的图像功能,也许这会妨碍你。您可以为图像设置resizingModecapInsets。试试这个:

    // Objective-C
    UIImage *newImage = [oldImage resizableImageWithCapInsets:UIEdgeInsetsZero resizingMode:UIImageResizingModeTile];
    
    # RubyMotion
    newImage = oldImage.resizableImageWithCapInsets(UIEdgeInsetsZero, resizingMode:UIImageResizingModeTile)
    

    如果您还需要调整插图,请将UIEdgeInsetsZero 替换为UIEdgeInsetsMake(top, left, bottom, right),其中topleftbottomrightfloats。在RubyMotion中,我相信你可以直接使用[top, left, bottom, right]

    信息来自这里: http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIImage_Class/Reference/Reference.html

    【讨论】:

    • 我现在看到 Apple 说不要用 UIImageResizingModeTile 调用 resizableImageWithCapInsets:resizingMode:,而是直接调用 resizableImageWithCapInsets。有一个只有 2 个可能值的参数有点疯狂,其中一个你不应该使用!!!
    • 我认为您的问题的真正答案是确保您提供的图像已经是您需要的确切尺寸,因此不需要剪裁或调整大小。
    • 你真的让我免于头疼!非常感谢,使用resizableImageWithCapInsets 成功了。我已经有了精确大小的图像,所以只需添加 newImage = oldImage.resizableImageWithCapInsets(UIEdgeInsetsZero, resizingMode:UIImageResizingModeTile) 就可以了
    • 仅供参考,我写了一篇关于这个主题的文章,可以在这里找到:marcgg.com/2012/10/22/custom-slider-ios-rubymotion
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 2020-01-06
    相关资源
    最近更新 更多