0

これはフォローアップの質問です-左から右へのグラデーション方向

このアップルリフレクションのサンプルコードでは、

AppleReflectionの例

サイズスライダーを動かすと、画像が下から上にカットされます。スライダーを動かしたときに上から下にカットするにはどうすればよいですか?私はこのチュートリアルをよりよく理解しようとしています

//I know the code is in this section here but I can't figure out what to change
- (UIImage *)reflectedImage:(UIImageView *)fromImage withHeight:(NSUInteger)height
{
...
}

    //it probably has something to do with this code. 
//I think this tells it how much to cut. 
//Though I can't figure out how does it know where the 0,0 of the image is and why 
// keep 0,0 of the image on the top? I am assuming this is where it hinges its 
//point and cuts the image from bottom to top
CGContextRef MyCreateBitmapContext(int pixelsWide, int pixelsHigh)
{

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

    // create the bitmap context
    CGContextRef bitmapContext = CGBitmapContextCreate (NULL, pixelsWide, pixelsHigh, 8, 0, colorSpace,(kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst));
    CGColorSpaceRelease(colorSpace);

    return bitmapContext;
}

ここに画像の説明を入力してください

反映する画像が上にある場合はどうなりますか。したがって、正しく表示するには、下からではなく上から下に表示する必要があります。それが私が達成しようとしている効果です。この場合、ストーリーボードの例でUIImageViewsを移動しました。あなたは今私のジレンマを見る

4

2 に答える 2

1

@ Putz1103の回答と非常によく似ています。以前の - (UIImage *)reflectedImage:(UIImageView *)fromImage withWidth:(NSUInteger)width から始まる新しいメソッドを作成する必要があります。

- (UIImage *)reflectedImage:(UIImageView *)fromImage withWidth:(NSUInteger)width andHeight:(NSUInteger)height
{
     ....
     CGContextClipToMask(mainViewContentContext, CGRectMake(0.0, 0.0, width, height), gradientMaskImage);
     ....
}

次に、slideAction メソッドで、次のようなものを使用します。

self.reflectionView.image = [self reflectedImage:self.imageView withWidth:self.imageView.bounds.size.width andHeight:reflectionHeight];

幸運を!

于 2013-01-16T17:31:26.813 に答える
0

私の推測では、次の行になります。

CGContextClipToMask(mainViewContentContext, CGRectMake(0.0, 0.0, fromImage.bounds.size.width, height), gradientMaskImage);

これを次のように変更すると、逆のことが行われます。

CGContextClipToMask(mainViewContentContext, CGRectMake(0.0, fromImage.bounds.size.height - height, fromImage.bounds.size.width, height), gradientMaskImage);

基本的に、クリッピング四角形を画像の上部ではなく画像の下部に設定する必要があります。これにより、スライダーの動作が逆になりますが、これは簡単に解決できるので、演習に任せます。

于 2013-01-16T15:48:41.597 に答える