3

如果我执行以下操作,那么titleView会很紧张:

UIImage * img =[UIImage imageNamed:@"isikota_small.png"];
UIImageView * uiImage= [[UIImageView alloc]initWithImage:img];
self.navigationItem.titleView = uiImage;

PO(self.navigationItem.titleView);

如果我做

UIImage * img =[UIImage imageNamed:@"isikota_small.png"];
UIImageView * uiImage= [[UIImageView alloc]initWithImage:img];
uiImage.frame = CGRectMake(0,0,66,33);

uiImage.autoresizingMask = UIViewAutoresizingFlexibleHeight;
//[self.navigationItem.titleView addAndResizeSubView:uiImage]; doesn't work


self.navigationItem.titleView = uiImage;
PO(self.navigationItem.titleView);

标题视图也会被拉伸。

如果我做:

UIImage * img =[UIImage imageNamed:@"isikota_small.png"];
UIImageView * uiImage= [[UIImageView alloc]initWithImage:img];
uiImage.frame = CGRectMake(0,0,66,33);

uiImage.autoresizingMask = UIViewAutoresizingFlexibleHeight;
//[self.navigationItem.titleView addAndResizeSubView:uiImage]; doesn't work
UIView * uiv = [[UIView alloc]init];
[uiv addSubview:uiImage];
uiv.frame = CGRectMake(127, 0, 66, 33);
uiv.autoresizingMask=UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;

self.navigationItem.titleView = uiv;
PO(self.navigationItem.titleView);

苹果以某种方式将其更改uiv.frameCGRectMake(127, 6, 66, 33).

必须有一个优雅的解决方案。

4

1 回答 1

4

当您使用自定义视图titleView以及 tableViews 和其他类似用例中的节页脚和标题时,iOS 将忽略视图框架的偏移部分或以一些不易预测的方式更改它。要解决此问题,您需要创建一个容器视图,以便您的容器具有偏移量 (0,0):

尝试这样的事情:

UIImage * img =[UIImage imageNamed:@"isikota_small.png"];
UIImageView * uiImage= [[UIImageView alloc]initWithImage:img];
uiImage.frame = CGRectMake(127,0,66,33);

UIView * uiv = [[UIView alloc]init];
[uiv addSubview:uiImage];
uiv.frame = CGRectMake(0, 0, 66+127, 33);

self.navigationItem.titleView = uiv;

我不确定自动调整大小的蒙版是否也将其丢弃,因此请尝试不使用任何蒙版,看看是否可以获得所需的行为。

于 2013-06-25T14:27:49.430 回答