1

パーセンテージ値に基づいて画像の一部を表示するカスタム プログレス バーに取り組んでいます。私のアイデアは、オリジナルと白黒バージョンの 2 つのイメージを持つことでした。私は白黒を表示しており、その上にパーセンテージに基づいて元の画像をトリミングしています。うまく機能していますが、上から下まで。

元の画像を下から上に「成長」させる方法はありますか?

以下は今までの私のコードのサンプルです:

    UIImageView *imgDefViewGray = [[UIImageView alloc] initWithFrame:CGRectMake(170, 85, 60, 60)];
    imgDefViewGray.image = [UIImage imageNamed:@"castle-gray.png"];
    [self addSubview:imgDefViewGray];

    UIImageView *imgDefView = [[UIImageView alloc] initWithFrame:CGRectMake(170, 85, 60, 60)];
    imgDefView.image = [UIImage imageNamed:@"castle.png"];

    CGRect rect = CGRectMake(0, 0 , 60, **50**);
    CGImageRef imageRef = CGImageCreateWithImageInRect([imgDefView.image CGImage], rect);
    UIImage *img = [UIImage imageWithCGImage:imageRef];

    imgDefView = [[UIImageView alloc] initWithFrame:CGRectMake(170, 85, 60, **50**)];
    imgDefView.image = img;
    [self addSubview:imgDefView];

したがって、太字(2 つのアスタリスク) の値を変更することで、元の画像を必要なだけトリミングすることができましたが、方向は上から下にしました。下→上でお願いします。

前もって感謝します

4

1 に答える 1

1

何度も試した後、私は自分が望む結果を得ることができました。以下は私の問題に対する私の解決策です。将来、同じことに直面したり、同じことを望んだりする人にとって、それが役立つことを願っています.

    UIImageView *imgDefViewGray = [[UIImageView alloc] initWithFrame:CGRectMake(170, 85, 60, 60)];
    imgDefViewGray.image = [UIImage imageNamed:@"castle-gray.png"];//60x60 b&w image

    UIImage originalImg = [UIImage imageNamed:@"castle.png"];//60x60 original image
    CGRect rect = CGRectMake(0, originalImg.size.height-scaleDefence), 60 , scaleDefence);//scaleDefence is just a float variable that converts current percentage value to px.

    CGImageRef imageRef = CGImageCreateWithImageInRect([originalImg CGImage], rect);
    UIImage *croppedImg = [UIImage imageWithCGImage:imageRef];

    UIImageView *imgDefView = [[UIImageView alloc] initWithFrame:CGRectMake(0, originalImg.size.height-scaleDefence, 60, scaleDefence)];//dynamically changing y-axis depending on cropped image's height.
    imgDefView.image = croppedImg;

    [imgDefViewGray addSubview:imgDefView];//make original image part of b&w
    [self addSubview:imgDefViewGray];//finally add the result to the view
于 2012-12-14T21:14:43.833 に答える