• UIImageView xib里面拉伸图片技巧


    拉伸图片的时候代码里和xib里面的图片名字去掉@2x,但是原始图片文件得要xxx@2x.png

    The X and Y values seem to be the positions for the stretch starting point, relative to the entire width and height of the image, i.e. 0.5 would mean a point in the middle of the image.

    Same thing for the Width and Height: sizes for the stretchable area, relative to the image size, i.e. setting it to a value of 1 / imageWidth would mean the stretchable area is 1 pixel wide. The strange thing is 0 also work fine for the blue pill button (could be for convenience reasons?).

    Below, view modes are set to "Scale to Fill". The images are stretchable images fromhttps://github.com/0xced/UIKit-Artwork-Extractor.

    enter image description here

    This answer was inspired by http://www.slideshare.net/mystcolor/stretchable-images-in-uiimageview-


    In cases where you want more than one pixel to stretch (ie. a pattern in the center of the button) the stretchable UIImage does not work.

    The UIButton's contentStretch does also not work properly.

    How I solved it: I subclassed UIButton and added a UIImageView *backgroundImageView as property and placed it at index 0 as a subview within the UIButton. I then ensure in layoutSubviews that it fits the button entirely and set the highlighted states of the imageView. All you need to do is handover a UIImageView with the correct contentStretch and contentMode applied.

    .h file

    @interface ButtonWithBackgroundImage : UIButton {
        UIImageView *backgroundImageView;
    }
    @property (retain) UIImageView *backgroundImageView;
    + (ButtonWithBackgroundImage*)button;
    @end

    .m file

    @implementation ButtonWithBackgroundImage
    @synthesize backgroundImageView;
    
    + (ButtonWithBackgroundImage*)button {
    return [self buttonWithType:UIButtonTypeCustom];
    }
    - (void)setBackgroundImageView:(UIImageView*)img {
        [backgroundImageView removeFromSuperview];
        [backgroundImageView release];
    
        backgroundImageView = [img retain];
    
        if(backgroundImageView){
            [self insertSubview:backgroundImageView atIndex:0];
            [self setNeedsLayout];
        }
    }
    
    - (void)setSelected:(BOOL)select {
        [super setSelected:select];
        // we subclass the setSelect method to highlight the background imageview
    [backgroundImageView setHighlighted:select||self.highlighted];
    }
    - (void)setHighlighted:(BOOL)highl {
        [super setHighlighted:highl];
    
        // we subclass the setHighlighted method to highlight the background imageview    
        [backgroundImageView setHighlighted:highl||self.selected];
    }
    
    - (void)layoutSubviews {
        [super layoutSubviews];
    
        self.backgroundImageView.frame = self.bounds;
    }
    
    - (void)dealloc {
        [backgroundImageView release];
        backgroundImageView = nil;
        [super dealloc];
    }
    @end

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    WINCE创建快捷方式
    Android初级开发第四讲系统中一些属性的区别
    Android初级开发第六讲Activity的布局
    Android初级开发第三讲项目中控件的学习
    物联网产业链及市场分
    读《浪潮之巅》有感
    Hello China V1.75成功运行于Lenovo超级本上
    Android初级开发第七讲特效和数据传递处理
    Android中级第二讲制作搜索页面,使用TextWatcher
    电信运营商物联网实践建议
  • 原文地址:https://www.cnblogs.com/zsw-1993/p/4879972.html
Copyright © 2020-2023  润新知