iOS - UIView的中心内容

时间:2014-02-24 14:49:02

标签: ios objective-c uiview custom-controls

我正在尝试用图像和数字创建UIView。我想把它们集中起来。现在我有这个代码:

    CGRect likesRect = CGRectMake(0,152, screenWidth / 2, 30);
    MARoundedRect *likesRoundedRect = [[MARoundedRect alloc] initWithFrame:likesRect];

    UIView *likesView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 30)];
    likesView.center = CGPointMake(screenWidth / 4, 20);

    UIImageView *likeImage = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 20, 20)];
    likeImage.image = [UIImage imageNamed:@"favorite.png"];

    UILabel *likesLabel = [[UILabel alloc]initWithFrame:CGRectMake(30, 0, screenWidth / 2, 20)];
    [likesLabel setTextColor:[UIColor whiteColor]];
    [likesLabel setBackgroundColor: [UIColor clearColor]];
    [likesLabel setText:[actualPlace.Favorites stringValue]];

    [likesView addSubview:likeImage];
    [likesView addSubview:likesLabel];
    [likesRoundedRect addSubview:likesView];
    [viewController.view addSubview:likesRoundedRect];

现在它工作得很好,但是我将likesView的宽度设置为精确值,而且当我没有一个或两个字母但更多的数字时,我想这会变坏。我怎样才能解决这个问题?如果有两个或多个组件并排,如何集中UIView的内容?或者我如何设置UIView按内容动态更改宽度?感谢

2 个答案:

答案 0 :(得分:0)

我没有编写完整的代码,但您尝试使用以下代码,

CGRect likesRect = CGRectMake(0,152, screenWidth / 2, 30);
MARoundedRect *likesRoundedRect = [[MARoundedRect alloc] initWithFrame:likesRect];

CGSize likeViewSize = CGSizeMake(50,30);
UIView *likesView = [[UIView alloc] init];
likesView.frame = CGRectMake(likesRoundedRect.frame.size.width/2 - likeViewSize.width/2,likesRoundedRect.frame.size.height/2 - likeViewSize.height/2,likeViewSize.width,likeViewSize.height);

我将likesView置于其父视图中心。如果你想将它们放在父视图上(likesView

,你必须对标签和imageview做同样的事情

答案 1 :(得分:0)

UIView及其子类有一个名为center的属性:

 CGPoint center1 = CGPointmake(self.view.bounds.size.width/2,  
         self.view.bounds.size,height/2) ; 

  subview.center = center1;   

以下讨论来自关于UIView的Apple文档:

@property(非原子)CGPoint中心 讨论 中心在其超视图的坐标系内指定,并以点为单位进行测量。设置此属性会相应地更改框架属性的值。

更改框架矩形会自动重新显示接收器而不调用drawRect:方法。如果您希望在框架矩形更改时调用drawRect:方法,请将contentMode属性设置为UIViewContentModeRedraw。

可以设置对此属性的更改。使用beginAnimations:context:class方法开始,使用commitAnimations类方法结束动画块。

状况 适用于iOS 2.0及更高版本。 也可以看看   @property框架   @property界限   @property变换 相关示例代码 AVLoupe 使用响应方法和手势识别器处理触摸 iAdInterstitialSuite iAdSuite RosyWriter 宣告进入 UIView.h