![](/img/trans.png)
[英]UIButton Title Label Text Not Changing Using Storyboard or Programmatically
[英]creating UIButton programmatically is blurry than using storyboard
我有兩個自定義UIButton具有相同的image.One是以編程方式創建的,這是模糊的,另一個是使用故事板工作正常。這是我的代碼
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIButton *purchaseButton=[UIButton buttonWithType:UIButtonTypeCustom];
purchaseButton=[UIButton buttonWithType:UIButtonTypeCustom];
purchaseButton.frame=CGRectMake(0, 35.5+30, 177, 55);
[purchaseButton setImage:[UIImage imageNamed:@"GouMai1.png"] forState:UIControlStateNormal];
[self.view addSubview:purchaseButton];
}
這是項目下載鏈接 (因為GFW,我只能上傳到中文網站)。 這是一個Xcode錯誤嗎?
purchaseButton.frame=CGRectMake(0, 35.5+30, 177, 55);
這是你的問題。 永遠不要給界面對象非整數坐標。 它會很模糊! - 你會注意到在Interface Builder(故事板)中你不能這樣做。
原因是在屏幕上有物理像素,並且沒有半像素這樣的東西:每個像素都是開啟或關閉的,就像它一樣。 因此,如果您使用半點坐標,它們無法准確匹配像素,系統將模糊匹配(抗鋸齒等)。
所以,擺脫.5
,事情會好得多。
與@matt所說的相反,只要它是視網膜設備,你現在可以做.5。 你甚至可以擁有.5寬度和高度,這就是iOS 7在某些地方獲得非常細線的方式。
當我運行您的示例應用程序時,在Retina iPad模擬器中它不是模糊的(沒有比源圖像更模糊)。 但在非Retina iPad模擬器中它很模糊,這是因為幀中的.5。
您需要測試屏幕的比例[UIScreen mainScreen].scale
並僅在比例大於1時添加.5。
另請注意,您正在使用該代碼創建兩個按鈕。 你可以刪除重復的行purchaseButton=[UIButton buttonWithType:UIButtonTypeCustom];
purchaseButton.frame=CGRectMake(0, 35.5+30, 177, 55);
其實
IOS主要基於點和dpi渲染所有內容,因此嘗試使用半點會導致模糊。 (這就是為什么我們不能在坐標構建器中將坐標設置為點)
因此,不允許浮動強制它們導致模糊。 請使用最接近的整數值。
另一方面,由於將偶數除以奇數將主要給出浮點系數。 我們必須在動態執行計算時使用ceil和floor方法。
purchaseButton.frame=CGRectMake(0, ceil(self.view.fram.size.width/3), 177, 55);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.