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);

どういうわけか、Apple は を に変更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 に答える