6

Xcode 4.3 で Master-Detail ビュー テンプレートを使い始めたばかりで、マスターの背景色を変更してカラー グラデーションに設定しようとしています。これが私が試したものです:

色.m

#import "Colors.h"

@implementation Colors

+ (UIColor *) navigationMenuGradientTop
{
    return [UIColor colorWithRed:213.0f/255.0f green:91.0f/255.0f blue:92.0f/255.0f alpha:1.0f];
}

+ (UIColor *) navigationMenuGradientBottom
{
    return [UIColor colorWithRed:188.0f/255.0f green:0.0f/255.0f blue:1.0f/255.0f alpha:1.0f];    
}

+ (CAGradientLayer *) navigationMenuGradient
{
    NSArray *colors = [NSArray arrayWithObjects:(id)self.navigationMenuGradientTop, self.navigationMenuGradientBottom, nil];
    CAGradientLayer *gradientLayer = [CAGradientLayer layer];
    gradientLayer.colors = colors;

    return gradientLayer;
}
@end

MasterViewController.m

import "Colors.h"

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];

    CAGradientLayer *bgLayer = [Colors navigationMenuGradient];
    bgLayer.frame = tableView.bounds;
    [tableView.layer insertSublayer:bgLayer atIndex:0];

    return cell;
}

実行すると、次のエラーが表示されますmain-Thread 1: EXC_BAD_ACCESS (code=1, address=0xxxxxxxx)

int main(int argc, char *argv[])
{
    @autorelasespool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

プロジェクトに QuartzCore フレームワークも追加しました。ここで何が欠けていますか?このようなエラーが発生した場合、一般的にどの方向に進むべきですか (ビルドが成功したため、ここでアプリがクラッシュしたようです)。

4

3 に答える 3

22
UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)] autorelease];
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = view.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor blackColor] CGColor], (id)[[UIColor whiteColor] CGColor], nil];
[view.layer insertSublayer:gradient atIndex:0];

from: iPhone の UIView と UILabels のグラデーション

このコードは問題を解決するのに役立ちます。

于 2012-04-19T09:27:55.880 に答える
2

ビューに背景のグラデーションを追加するために、次のリンクのチュートリアルに従いました。

http://danielbeard.wordpress.com/2012/02/25/gradient-background-for-uiview-in-ios/

私の場合、UITableView があり、グラデーションを背景にしたかったのです。リンクから以下のコードを使用すると、テーブルビューが消えました。

-(void) ViewWillAppear:(BOOL) animated {   
CAGradientLayer *bgLayer = [BackgroundLayer blueGradient];
bgLayer.frame = self.view.bounds;
[self.view.layer insertSublayer:bgLayer atIndex:0];
}

以下のようにコードを変更すると、背景のグラデーションとテーブルビューを同時に持つことができました。

-(void) ViewDidAppear:(BOOL) animated {   
CAGradientLayer *bgLayer = [BackgroundLayer blueGradient];
bgLayer.frame = self.view.bounds;
[self.tableView.layer insertSublayer:bgLayer atIndex:0];
}
于 2013-09-24T03:12:37.313 に答える
0

ねえ、この男のブログをここでチェックしてください。これは私をかなり助けました!私は自分の要件とVOILAに従ってクラスを変更しました!

http://danielbeard.wordpress.com/2012/02/25/gradient-background-for-uiview-in-ios/

于 2013-06-16T12:21:07.123 に答える