我編寫了一個簡單的紅色漸變的按鈕背景,當高度小於100時工作,但如果按鈕大於這一點,我不明白爲什麼。我正在使用PaintCode(直到現在像魅力一樣)繪製代碼,然後我將梯度的大小從[UIBezierPath bezierPathWithRoundedRect: CGRectMake(0, 0, 240, 120) cornerRadius: 4];
更改爲[UIBezierPath bezierPathWithRoundedRect: CGRectMake(0, 0, self.frame.size.width, self.frame.size.height) cornerRadius: 4];
,因爲按鈕的大小在4.5「和5」設備之間變化。我正在使用其他梯度與相同的代碼減去其他按鈕上的顏色,他們工作得很好。只有當身高超過100分時,我才發現問題。任何想法有什麼不對?核心圖形不會加載某些按鈕的所有方式
這裏是我正在使用的代碼:
//// General Declarations
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = UIGraphicsGetCurrentContext();
//// Color Declarations
UIColor* lightRedColor = [UIColor colorWithRed: 1 green: 0.188 blue: 0.098 alpha: 1];
UIColor* darkRedColor = [UIColor colorWithRed: 0.812 green: 0.016 blue: 0.016 alpha: 1];
//// Gradient Declarations
NSArray* redGradientColors = [NSArray arrayWithObjects:
(id)lightRedColor.CGColor,
(id)[UIColor colorWithRed: 0.906 green: 0.102 blue: 0.057 alpha: 1].CGColor,
(id)darkRedColor.CGColor, nil];
CGFloat redGradientLocations[] = {0, 0.5, 1};
CGGradientRef redGradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef)redGradientColors, redGradientLocations);
//// Rounded Rectangle Drawing
UIBezierPath* roundedRectanglePath = [UIBezierPath bezierPathWithRoundedRect: CGRectMake(0, 0, self.frame.size.width, self.frame.size.height) cornerRadius: 4];
CGContextSaveGState(context);
[roundedRectanglePath addClip];
CGContextDrawLinearGradient(context, redGradient, CGPointMake(120, 0), CGPointMake(120, 120), 0);
CGContextRestoreGState(context);
//// Cleanup
CGGradientRelease(redGradient);
CGColorSpaceRelease(colorSpace);
編輯:這裏是按鈕的截圖:
你有屏幕截圖嗎?還有其他意見可以覆蓋按鈕嗎? – Wain
我剛剛上傳了截圖 - 謝謝你。此外,沒有其他意見可以覆蓋它。 –
爲按鈕和其超級視圖添加邊框,以便100%可以看到它們的位置(如果需要,可以遞歸地將其用於所有視圖)。 – Wain