【问题标题】:How to display fixed size text on UIView using pinchgesturerecognizer?如何使用 pinchgesturerecognizer 在 UIView 上显示固定大小的文本?
【发布时间】:2012-06-05 11:54:38
【问题描述】:

我有一个视图(myView),并且由于 myView 上的显示文本而在 myView 上创建了一些标签。我在 myView 上应用了 pinchgesturerecognizer。它工作得很好。我的问题是当我在 myView 上捏时,标签文本的大小将根据捏的增加或减少而改变。如果你捏(放大)myView,标签文本的大小非常小,所以我们看不到文本。如果你捏(缩小)myView,标签文本的大小很大。

因此,无论您放大或缩小 myView,我都想修复标签文本的大小。我试过了,但我没有得到答案。我也使用setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleWidth,但我没听懂。我不知道如何使用它。请帮我。提前致谢。

我的代码是:

ViewController.m

   - (void)viewDidLoad
    {
        MyView *myView = [[MyView  alloc] initWithFrame:CGRectMake(0, 100, 200, 100)];
    [self.view addSubview:myView];
        [super viewDidLoad];
    UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scalePiece:)];
        [pinchGesture setDelegate:self];
        [myView addGestureRecognizer:pinchGesture];
        [pinchGesture release];
    }

- (void)scalePiece:(UIPinchGestureRecognizer *)gestureRecognizer
{

    if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) {
        [gestureRecognizer view].transform = CGAffineTransformScale([[gestureRecognizer view] transform], [gestureRecognizer scale], [gestureRecognizer scale]);
           //[gestureRecognizer setScale:1];


    }
}

MyView.m

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
label1 = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 35, 20)];
label1.font = [UIFont fontWithName:@"Helvetica-Bold" size:10];
label1.text = @"label1";
[self addSubview:label1];

label2 = [[UILabel alloc] initWithFrame:CGRectMake(40, 0, 35, 20)];
label2.font = [UIFont fontWithName:@"Helvetica-Bold" size:10];
label2.text = @"label2";
[self addSubview:label2];



label3 = [[UILabel alloc] initWithFrame:CGRectMake(0, 40, 35, 20)];
label3.font = [UIFont fontWithName:@"Helvetica-Bold" size:10];
label3.text = @"label1";
[self addSubview:label3];

label4 = [[UILabel alloc] initWithFrame:CGRectMake(40, 40, 35, 20)];
label4.font = [UIFont fontWithName:@"Helvetica-Bold" size:10];
label4.text = @"label4";
[self addSubview:label4];
    }
    return self;
}

我想修正label1、label2、label3、label4的文字。

【问题讨论】:

    标签: ios uiview uilabel uigesturerecognizer xcode4.3


    【解决方案1】:

    听起来您正在尝试放大某些项目而不是其他项目。有两种方法可以解决这个问题。两者都不是很简单。您可以将标签拆分到他们自己的视图中,并在另一个视图上进行捏合手势后手动重新定位它们。或者,您可以将它们留在此视图中,并在捏紧后手动重新缩放和定位它们。无论哪种方式,您都必须做一些数学运算。

    【讨论】:

    • 谢谢。我已经编辑了我的代码。所有标签都在 myView 上。我在 myView 上应用 pinchgesturerecognizer。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-18
    • 2019-08-01
    • 1970-01-01
    • 2015-09-06
    • 2018-03-25
    相关资源
    最近更新 更多