1

単純に見える何かに問題があります。以下のコードを使用して、プログラムで UIView を FLOAT の高さ/幅の Rectangles で塗りつぶします。

    int  WIDTH = 72(does NOT work);//80(works);//32(works);
    int  HEIGHT = 45(does NOT work);//50(works);//20(works);
    _cellSizeX = self.bounds.size.width / WIDTH;
    _cellSizeY = self.bounds.size.height / HEIGHT;
    UIGraphicsBeginImageContext(self.bounds.size);
    CGRect cellFrame = CGRectMake(0, 0,_cellSizeX, _cellSizeY);
    _cellIndex = 0;

    for (int i = 0; i < WIDTH; i++)
    {
        cellFrame.origin.y = 0;
        for (int j = 0; j < HEIGHT; j++, _cellIndex++)
        {  
            [_Image drawInRect:cellFrame blendMode:kCGBlendModeOverlay alpha:1.0];
            cellFrame.origin.y += _cellSizeY;
        }
        cellFrame.origin.x += _cellSizeX;
    }
    _blendedImage = UIGraphicsGetImageFromCurrentImageContext();
    _Layer.contents = (id) _blendedImage.CGImage;
    UIGraphicsEndImageContext();

コードは正常に動作しますが、幅と高さに対して素数に明確に分割されている場合のみです。EG 幅 = 480、高さ = 300。

The Primes of 480 are: 480= 2*2*2*2*2*3*5;
The Primes of 300 are: 300= 2*2*3*5*5;
And their common primes are: 2*2*3*5;

つまり、行/列のセルの量に問題はありません:

8(actually 2*2*2)/5;
16 / 10;
24 / 15;
32 / 20;
...;
80 / 50;

しかし、例えば 72 / 45 ではありません.... 簡単にする理由は次のとおりです。

480 / 72 = 6,6666667;
300 / 45 = 6,6666667;

一方、うまくいく例:

480 / 32 = 15;
300 / 20 = 15;

そのため、float と int の問題がどこかにあります。しかしここで ??!!

これを読んでくれてありがとう。

4

1 に答える 1