1

こんにちは、私は iOS 開発の初心者です。ビューからツールバーにラベルをドラッグしようとしています...しかし、ラベルはツールバーの裏側に移動します.ツールバーの前にラベルをドラッグしたい..この問題に関して何か助けてください..... .これは私が今まで行ったコードです

- (void)viewDidLoad {
    [super viewDidLoad];

    UIToolbar *backgrdtoolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width,44)];

    [backgrdtoolbar setBarStyle:UIBarStyleBlackOpaque];

    [self.view addSubview:backgrdtoolbar];

    mainScroll =  [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 45)];

    [mainScroll setContentSize:CGSizeMake(600,45)];
    [mainScroll setBackgroundColor:[UIColor clearColor]];
    [mainScroll setShowsHorizontalScrollIndicator:NO];

    mainToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 600, 44)];
    [mainToolbar setBarStyle:UIBarStyleBlackTranslucent];

    [self.view addSubview:mainScroll];

    [mainScroll addSubview:mainToolbar];

    UIBarButtonItem *b1 = [[UIBarButtonItem alloc]initWithTitle:@"1" style:UIBarButtonItemStyleBordered target:self action:@selector(_1:)];
    UIBarButtonItem *b2 = [[UIBarButtonItem alloc]initWithTitle:@"2" style:UIBarButtonItemStyleBordered target:self action:@selector(_1:)];
    UIBarButtonItem *b3 = [[UIBarButtonItem alloc]initWithTitle:@"3" style:UIBarButtonItemStyleBordered target:self action:@selector(_1:)];

    UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];

    NSMutableArray *arr = [[NSMutableArray alloc] initWithObjects:b1,spacer,b2,spacer,b3, spacer,b4,spacer,b5,spacer,b6,spacer,b7,spacer,b8,spacer,b9,spacer,b10,nil];
    [mainToolbar setItems:arr];

}



 - (IBAction)handle:(UIPanGestureRecognizer *)gesture {
        static CGRect originalFrame;

        if (gesture.state == UIGestureRecognizerStateBegan){
            originalFrame = gesture.view.frame;
        } else if (gesture.state == UIGestureRecognizerStateChanged) {
            CGPoint translate = [gesture translationInView:gesture.view.superview];

            CGRect newFrame = CGRectMake(fmin(gesture.view.superview.frame.size.width - originalFrame.size.width, fmax(originalFrame.origin.x + translate.x, 0.0)),
                                         fmin(gesture.view.superview.frame.size.height - originalFrame.size.height, fmax(originalFrame.origin.y + translate.y , 0.0)),
                                         originalFrame.size.width,
                                         originalFrame.size.height);


            gesture.view.frame = newFrame;

        }

    }
4

1 に答える 1

0

あるビューを別のビューにドラッグすることはできますか? はい、可能です。

しかし、ラベルを他のビューの前に置くことだけが重要な場合は、ラベルが表示されているビューを変更しないことが最善の方法だと思います。つまり、他のビューを変更する必要はありません。 、それは宛先ビュー内にあります。

私があなたの立場にあった場合、ラベルを配置するビューと、ラベルを配置するビューとラベルをドラッグできるようにするビューの両方を含むビューを持つ 1 つのビューを使用します。

このビューにラベルを追加する場合、注意すべき重要な点は、ラベルがビューの前にある必要があるということです。次のコードを使用してそれを行うことができます。

[view bringSubviewToFront:yourLabel];

その後、それをビュー コンテナ内にドラッグすると、他のビューの前に配置されます。:)

-

あるビューから別のビューに本当に変更したい場合は、元のビューから削除し、配置する別のビューに追加する必要があります。そんな感じ

if(gesture.view.frame.origin.y > y ) {
    [gesture.view removeFromSuperview];
    [newView addSubview:gesture.view];
    //Your code to adjust the frame for the new view, because your frame is relative
    //It is define by your superview
}
于 2013-05-28T19:10:08.617 に答える